ContactManager Clase

Definición

Representa una colección de objetos PeerContact que persisten en una Libreta de direcciones de Windows.Represents a collection of PeerContact objects which persist in a Windows Address Book.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Herencia
ContactManager
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo enumerar un PeerNearMe y agregarlo como un PeerContact al local ContactManager :The following example code illustrates how to enumerate a PeerNearMe and add it as a PeerContact to the 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;
}

Comentarios

Esta clase no tiene ningún constructor público, ya que la clase devuelve una referencia a él PeerCollaboration .This class has no public constructors, since a reference to it is returned by the PeerCollaboration class.

Entre las libretas de direcciones asociadas a PeerContact la administración se incluyen las asociadas al host del mismo nivel y a un equipo remoto del mismo nivel.Address books that are associated with PeerContact management include those associated with the host peer and a remote peer. Cualquier equipo puede colaborar con otros equipos del mismo nivel; Cuando un elemento del mismo nivel es local al elemento remoto del mismo nivel, pero no al host del mismo nivel, se puede Agregar al ContactManager del host del mismo nivel.Either computer may collaborate with other peers; when a peer is local to the remote peer but not the host peer, it can be added to the ContactManager of the host peer. Ciertas operaciones en la ContactManager clase, como AddContact y DeleteContact , se correlacionan con las operaciones asociadas que se realizan en la libreta de direcciones de Windows del elemento remoto del mismo nivel.Certain operations on the ContactManager class, such as AddContact and DeleteContact, correlate to the associated operations being performed on the Windows Address book of the remote peer.

El host del mismo nivel tiene acceso a este almacenamiento persistente para obtener PeerContact información, que se puede asociar a las aplicaciones en las que un elemento del mismo nivel pretende participar.The host peer has access to this persistent storage for PeerContact information, which can be associated with the applications in which a peer intends to participate. Un PeerApplication puede identificarse como un usuario de un ContactManager almacén persistente en un equipo.A PeerApplication can identify itself as a user of a ContactManager persistent store on a computer.

Propiedades

LocalContact

Obtiene el objeto PeerContact que representa al elemento local del mismo nivel.Gets the PeerContact representing the local peer.

SynchronizingObject

Cuando se establece este valor de propiedad, todos los eventos que no se han provocado como resultado de una operación asincrónica devuelven la llamada de los controladores de eventos asociados en el subproceso que creó la propiedad SynchronizingObject específica.When this property value is set, all events not fired as the result of an asynchronous operation will have the associated event handlers called back on the thread that created the specific SynchronizingObject.

Métodos

AddContact(PeerContact)

Agrega el PeerContact especificado a ContactManager del mismo nivel local.Adds the specified PeerContact to the ContactManager of the local peer.

CreateContact(PeerNearMe)

Crea una instancia de PeerContact para el objeto PeerNearMe especificado.Creates a PeerContact instance for the specified PeerNearMe object.

CreateContactAsync(PeerNearMe, Object)

Crea una instancia de contacto mediante el objeto PeerNearMe especificado.Creates a contact instance for the specified PeerNearMe object.

DeleteContact(PeerContact)

Quita el PeerContact especificado del ContactManager del mismo nivel local.Removes the specified PeerContact from the ContactManager of the local peer.

DeleteContact(PeerName)

Quita el PeerContact asociado al PeerName especificado del ContactManager del mismo nivel local.Removes the PeerContact associated with the specified PeerName from the ContactManager of the local peer.

Dispose()

Libera todos los recursos utilizados por el objeto ContactManager.Releases all resources used by the ContactManager object.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetContact(PeerName)

Devuelve el objeto PeerContact para el PeerName especificado.Returns the PeerContact object for the specified PeerName.

GetContacts()

Devuelve un objeto PeerContactCollection que contiene todos los contactos del ContactManager del elemento remoto del mismo nivel.Returns a PeerContactCollection that contains all contacts within the ContactManager of the remote peer.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
UpdateContact(PeerContact)

Actualiza los datos asociados al PeerContact.Updates the data associated with the PeerContact.

Eventos

ApplicationChanged

Se provoca cuando cambia un objeto PeerApplication asociado a PeerContact en ContactManager.Raised whenever a PeerApplication associated with a PeerContact in the ContactManager has changed.

CreateContactCompleted

Se provoca cuando se ha completado un método CreateContact(PeerNearMe).Raised whenever a CreateContact(PeerNearMe) method has completed.

NameChanged

Se provoca cuando cambia el objeto PeerName asociado a PeerContact en ContactManager.Raised whenever the PeerName associated with a PeerContact in the ContactManager has changed.

ObjectChanged

Se genera cuando ha cambiado un objeto dentro de los objetos registrados PeerObject de un contacto.Raised whenever an object within a contact's registered PeerObject objects has changed.

PresenceChanged

Se provoca cuando cambia el estado de presencia de PeerContact en ContactManager.Raised whenever the presence status of a PeerContact in the ContactManager has changed.

SubscriptionListChanged

Se provoca cuando cambia la lista de contactos suscritos.Raised when the list of subscribed contacts changes.

Se aplica a

Consulte también