ContactManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un insieme di oggetti PeerContact che vengono mantenuti in una rubrica Windows.
public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
- Ereditarietà
-
ContactManager
- Implementazioni
Esempio
Il codice di esempio seguente illustra come enumerare un PeerNearMe oggetto e aggiungerlo come oggetto PeerContact all'oggetto locale ContactManager:
// Displays all contacts and asssociated peer endpoints (PeerEndPoint) in the PeerContactCollection.
private static void DisplayContacts(PeerContactCollection peerContactsCollection)
{
if (peerContactsCollection == null ||
peerContactsCollection.Count == 0)
{
Console.WriteLine("No contacts to display. To add a contact select option 0 from the menu.");
}
else
{
foreach (PeerContact pc in peerContactsCollection)
{
Console.WriteLine("The contact is: {0}", pc.DisplayName);
DisplayEndpoints(pc.PeerEndPoints);
}
}
return;
}
//------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------
// Displays all peer end points (PeerEndPoint) in the PeerEndPointCollection.
private static void DisplayEndpoints(PeerEndPointCollection endpointCollection)
{
if (endpointCollection == null || endpointCollection.Count == 0)
{
Console.WriteLine("No peer endpoints in the collection to display.");
}
else
{
foreach (PeerEndPoint pep in endpointCollection)
{
Console.WriteLine("PeerEndPoint is: {0}", pep);
Console.WriteLine("PeerEndPoint data is:\n Name: {0}\n EndPoint IP address: {1}\n . Port: {2}\n",
pep.Name,
pep.EndPoint.Address,
pep.EndPoint.Port);
}
}
return;
}
//------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------
//List PeerNearMe objects that may be added as contacts.
private static void AddContact()
{
PeerNearMeCollection pnmc = null;
PeerContactCollection peerContacts = null;
bool peerNameFound = false;
PeerApplication application = null;
try
{
Console.WriteLine("Listing the existing contacts...");
peerContacts = PeerCollaboration.ContactManager.GetContacts();
}
catch (PeerToPeerException p2pEx)
{
Console.WriteLine("The Peer Collaboration Infrastructure is not responding to the contact enumeration request: {0}", p2pEx.Message);
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred while attempting to obtain the contact list: {0}", ex.Message);
}
DisplayContacts(peerContacts);
try
{
//Adds one of the PeerNearMe objects as a contact.
pnmc = GetPeersNearMe();
Console.WriteLine("Please enter the nickname of the peer you wish to add as a contact:");
string peerNameToAdd = Console.ReadLine();
application = RegisterCollabApp();
foreach (PeerNearMe pnm in pnmc)
{
PeerInvitationResponse res = null;
if (pnm.Nickname.Contains(peerNameToAdd))
{
peerNameFound = true;
if (!peerContacts.ToString().Contains(pnm.Nickname))
{
Console.WriteLine("Adding peer {0} to the contact list.", pnm.Nickname);
pnm.AddToContactManager();
}
else
{
Console.WriteLine("This peer already exists in your contact list.");
Console.WriteLine("Sending invitation using the Contact structure instead of the PeerNearMe.");
foreach (PeerContact pc in peerContacts)
{
if (pc.Nickname.Equals(pnm.Nickname))
{
res = pnm.Invite(application, "Peer Collaboration Sample", application.Data);
if (res.PeerInvitationResponseType == PeerInvitationResponseType.Accepted)
{
Console.WriteLine("Invitation to contact succeeded.");
}
else
{
Console.WriteLine("Invitation to contact {0}.", res.PeerInvitationResponseType);
}
}
}
}
}
}
if (!peerNameFound)
{
Console.WriteLine("No such peer exists near you. Cannot add to contacts.");
return;
}
peerContacts = PeerCollaboration.ContactManager.GetContacts();
Console.WriteLine("Listing the contacts again...");
DisplayContacts(peerContacts);
}
catch (Exception ex)
{
Console.WriteLine("Error adding a contact: {0}", ex.Message);
}
finally
{
application.Dispose();
}
return;
}
Commenti
Questa classe non dispone di costruttori pubblici, poiché viene restituito un riferimento dalla PeerCollaboration classe .
Le rubriche associate alla PeerContact gestione includono quelle associate al peer host e a un peer remoto. Entrambi i computer possono collaborare con altri peer; quando un peer è locale per il peer remoto, ma non il peer host, può essere aggiunto al ContactManager del peer host. Alcune operazioni sulla classe ContactManager, ad esempio AddContact e DeleteContact, correlare alle operazioni associate eseguite nella rubrica Windows del peer remoto.
Il peer host ha accesso a questa risorsa di archiviazione permanente per PeerContact informazioni, che possono essere associate alle applicazioni in cui un peer intende partecipare. Un PeerApplication oggetto può identificarsi come utente di un ContactManager archivio permanente in un computer.
Proprietà
| Nome | Descrizione |
|---|---|
| LocalContact |
Ottiene l'oggetto PeerContact che rappresenta il peer locale. |
| SynchronizingObject |
Quando questo valore della proprietà è impostato, tutti gli eventi non generati come risultato di un'operazione asincrona avranno i gestori eventi associati richiamati nel thread che ha creato l'oggetto specifico SynchronizingObject. |
Metodi
| Nome | Descrizione |
|---|---|
| AddContact(PeerContact) |
Aggiunge l'oggetto specificato PeerContact all'oggetto ContactManager del peer locale. |
| CreateContact(PeerNearMe) |
Crea un'istanza PeerContact per l'oggetto specificato PeerNearMe . |
| CreateContactAsync(PeerNearMe, Object) |
Crea un'istanza di contatto per l'oggetto specificato PeerNearMe . |
| DeleteContact(PeerContact) |
Rimuove l'oggetto specificato PeerContact dall'oggetto ContactManager del peer locale. |
| DeleteContact(PeerName) |
Rimuove l'oggetto PeerContact associato all'oggetto specificato PeerName dall'oggetto ContactManager del peer locale. |
| Dispose() |
Rilascia tutte le risorse utilizzate dall'oggetto ContactManager . |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetContact(PeerName) |
Restituisce l'oggetto per l'oggetto PeerContact specificato PeerName. |
| GetContacts() |
Restituisce un oggetto PeerContactCollection che contiene tutti i contatti all'interno ContactManager del peer remoto. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| UpdateContact(PeerContact) |
Aggiorna i dati associati a PeerContact. |
Eventi
| Nome | Descrizione |
|---|---|
| ApplicationChanged |
Generato ogni volta che viene modificato un PeerApplication oggetto associato a un PeerContact oggetto in ContactManager . |
| CreateContactCompleted |
Generato ogni volta che un CreateContact(PeerNearMe) metodo è stato completato. |
| NameChanged |
Generato ogni volta che l'oggetto PeerName associato a un PeerContact oggetto ContactManager in è stato modificato. |
| ObjectChanged |
Generato ogni volta che un oggetto all'interno degli oggetti registrati PeerObject di un contatto è cambiato. |
| PresenceChanged |
Generato ogni volta che lo stato di presenza di un PeerContact oggetto ContactManager in è stato modificato. |
| SubscriptionListChanged |
Generato quando cambia l'elenco dei contatti sottoscritti. |