ContactManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma coleção de objetos PeerContact que persistem em um catálogo de endereços Windows.
public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
- Herança
-
ContactManager
- Implementações
Exemplos
O código de exemplo a seguir ilustra como enumerar um PeerNearMe e adicioná-lo como um PeerContact ao local 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;
}
Comentários
Essa classe não tem construtores públicos, pois uma referência a ela é retornada pela PeerCollaboration classe.
Os catálogos de endereços associados PeerContact ao gerenciamento incluem aqueles associados ao par de host e a um par remoto. Qualquer computador pode colaborar com outros pares; quando um par é local para o par remoto, mas não para o par de host, ele pode ser adicionado ao ContactManager par de host. Determinadas operações na classe ContactManager, como AddContact e DeleteContact, correlacionam-se às operações associadas que estão sendo executadas no catálogo de endereços Windows do par remoto.
O par de host tem acesso a esse armazenamento persistente para obter PeerContact informações, que podem ser associados aos aplicativos nos quais um par pretende participar. É PeerApplication possível identificar-se como um usuário de um ContactManager repositório persistente em um computador.
Propriedades
| Nome | Description |
|---|---|
| LocalContact |
Obtém o PeerContact par local que representa. |
| SynchronizingObject |
Quando esse valor de propriedade for definido, todos os eventos não acionados como resultado de uma operação assíncrona terão os manipuladores de eventos associados chamados novamente no thread que criou o específico SynchronizingObject. |
Métodos
| Nome | Description |
|---|---|
| AddContact(PeerContact) |
Adiciona o especificado PeerContact ao ContactManager par local. |
| CreateContact(PeerNearMe) |
Cria uma PeerContact instância para o objeto especificado PeerNearMe . |
| CreateContactAsync(PeerNearMe, Object) |
Cria uma instância de contato para o objeto especificado PeerNearMe . |
| DeleteContact(PeerContact) |
Remove o especificado PeerContact do ContactManager par local. |
| DeleteContact(PeerName) |
Remove o PeerContact associado ao especificado PeerName do ContactManager par local. |
| Dispose() |
Libera todos os recursos usados pelo ContactManager objeto. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetContact(PeerName) |
Retorna o PeerContact objeto para o especificado PeerName. |
| GetContacts() |
Retorna um PeerContactCollection que contém todos os contatos dentro do ContactManager par remoto. |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
| UpdateContact(PeerContact) |
Atualiza os dados associados ao PeerContact. |
Eventos
| Nome | Description |
|---|---|
| ApplicationChanged |
Gerado sempre que um PeerApplication associado a PeerContact um ContactManager no foi alterado. |
| CreateContactCompleted |
Gerado sempre que um CreateContact(PeerNearMe) método for concluído. |
| NameChanged |
Gerado sempre que o PeerName associado a PeerContact um ContactManager no foi alterado. |
| ObjectChanged |
Gerado sempre que um objeto dentro dos objetos registrados PeerObject de um contato é alterado. |
| PresenceChanged |
Gerado sempre que o status de presença de um PeerContact no ContactManager foi alterado. |
| SubscriptionListChanged |
Gerado quando a lista de contatos inscritos é alterada. |