ContactManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma coleção de objetos PeerContact que persistem numa Windows Livro de Endereços.
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 seguinte código de exemplo ilustra como enumerar a PeerNearMe e adicioná-lo como a 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;
}
Observações
Esta classe não tem construtores públicos, uma vez que uma referência a ela é devolvida pela PeerCollaboration classe.
Os livros de endereços associados à PeerContact gestão incluem aqueles associados ao par anfitrião e um par remoto. Qualquer um dos computadores pode colaborar com outros pares; Quando um par é local ao par remoto mas não ao par host, pode ser adicionado ao ContactManager do par host. Certas operações na classe ContactManager, como AddContact e DeleteContact, correlacionam-se com as operações associadas que estão a ser realizadas no livro de endereços Windows do par remoto.
O par host tem acesso a este armazenamento persistente de PeerContact informação, que pode ser associada às aplicações em que um par pretende participar. A PeerApplication pode identificar-se como utilizador de um ContactManager armazenamento persistente num computador.
Propriedades
| Name | Description |
|---|---|
| LocalContact |
Obtém a PeerContact posição de representar o par local. |
| SynchronizingObject |
Quando este valor de propriedade é definido, todos os eventos que não são disparados como resultado de uma operação assíncrona terão os gestores de eventos associados chamados de volta para a thread que criou o .SynchronizingObject |
Métodos
| Name | Description |
|---|---|
| AddContact(PeerContact) |
Adiciona o especificado PeerContact ao ContactManager do par local. |
| CreateContact(PeerNearMe) |
Cria uma PeerContact instância para o objeto especificado PeerNearMe . |
| CreateContactAsync(PeerNearMe, Object) |
Cria uma instância de contacto 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() |
Liberta todos os recursos usados pelo ContactManager objeto. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetContact(PeerName) |
Devolve o PeerContact objeto para o especificado PeerName. |
| GetContacts() |
Retorna um PeerContactCollection que contém todos os contactos dentro ContactManager do par remoto. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| UpdateContact(PeerContact) |
Atualiza os dados associados ao PeerContact. |
evento
| Name | Description |
|---|---|
| ApplicationChanged |
Surgiu sempre que um PeerApplication associado a um PeerContact no ContactManager mudou. |
| CreateContactCompleted |
Aumenta sempre que um CreateContact(PeerNearMe) método está concluído. |
| NameChanged |
Surgiu sempre que o PeerName associado a um PeerContact no ContactManager mudou. |
| ObjectChanged |
Levantado sempre que um objeto dentro dos objetos registados PeerObject de um contacto mudou. |
| PresenceChanged |
É levantado sempre que o estatuto de presença de um PeerContact no ContactManager mudou. |
| SubscriptionListChanged |
É aumentado quando a lista de contactos subscritos muda. |