ContactManager ContactManager ContactManager ContactManager Class

Definition

Stellt eine Auflistung von PeerContact-Objekten dar, die in einem Windows-Adressbuch beibehalten werden.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
Vererbung
ContactManagerContactManagerContactManagerContactManager
Implementiert

Beispiele

Der folgende Beispielcode veranschaulicht das Auflisten einer PeerNearMe und fügen Sie ihn als einen PeerContact der lokalen 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;
}

Hinweise

Diese Klasse verfügt über keine öffentlichen Konstruktoren, aus, da ein Verweis darauf, durch zurückgegeben wird die PeerCollaboration Klasse.This class has no public constructors, since a reference to it is returned by the PeerCollaboration class.

Adressbücher zugeordnet sind, die PeerContact Management beinhalten diejenigen, die den Hostpeer und einen Remotepeer zugeordnet.Address books that are associated with PeerContact management include those associated with the host peer and a remote peer. Beide Computer kann mit anderen Peers zusammenarbeiten. Wenn ein Peer für Remotepeers, jedoch nicht den Hostpeer lokal ist, kann hinzugefügt werden die ContactManager von den Hostpeer.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. Bestimmte Vorgänge für die ContactManager Klasse, z. B. AddContact und DeleteContact, Korrelieren, um die zugehörigen Vorgänge, die auf dem Windows-Adressbuch des Remotepeers ausgeführt.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.

Der Peer hat Zugriff auf diesen persistenten Speicher für PeerContact Informationen, die den Anwendungen zugeordnet werden können in dem ein Peer teilnehmen möchte.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. Ein PeerApplication können sich selbst als Benutzer der Identifizieren einer ContactManager permanenten Speicher auf einem Computer.A PeerApplication can identify itself as a user of a ContactManager persistent store on a computer.

Eigenschaften

LocalContact LocalContact LocalContact LocalContact

Ruft den PeerContact ab, der den lokalen Peer darstellt.Gets the PeerContact representing the local peer.

SynchronizingObject SynchronizingObject SynchronizingObject SynchronizingObject

Wenn dieser Eigenschaftswert festgelegt ist, werden für alle Ereignisse, die nicht aufgrund eines asynchronen Vorgangs ausgelöst werden, die zugeordneten Ereignishandler in dem Thread aufgerufen, in dem das spezifische SynchronizingObject erstellt wurde.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.

Methoden

AddContact(PeerContact) AddContact(PeerContact) AddContact(PeerContact) AddContact(PeerContact)

Fügt den angegebenen PeerContact dem ContactManager des lokalen Peers hinzu.Adds the specified PeerContact to the ContactManager of the local peer.

CreateContact(PeerNearMe) CreateContact(PeerNearMe) CreateContact(PeerNearMe) CreateContact(PeerNearMe)

Erstellt eine PeerContact-Instanz für das angegebene PeerNearMe-Objekt.Creates a PeerContact instance for the specified PeerNearMe object.

CreateContactAsync(PeerNearMe, Object) CreateContactAsync(PeerNearMe, Object) CreateContactAsync(PeerNearMe, Object) CreateContactAsync(PeerNearMe, Object)

Erstellt eine Kontaktinstanz für das angegebene PeerNearMe-Objekt.Creates a contact instance for the specified PeerNearMe object.

DeleteContact(PeerContact) DeleteContact(PeerContact) DeleteContact(PeerContact) DeleteContact(PeerContact)

Entfernt den angegebenen PeerContact aus dem ContactManager des lokalen Peers.Removes the specified PeerContact from the ContactManager of the local peer.

DeleteContact(PeerName) DeleteContact(PeerName) DeleteContact(PeerName) DeleteContact(PeerName)

Entfernt den PeerContact, der dem angegebenen PeerName aus dem ContactManager des lokalen Peers zugeordnet ist.Removes the PeerContact associated with the specified PeerName from the ContactManager of the local peer.

Dispose() Dispose() Dispose() Dispose()

Gibt alle vom ContactManager-Objekt verwendeten Ressourcen frei.Releases all resources used by the ContactManager object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetContact(PeerName) GetContact(PeerName) GetContact(PeerName) GetContact(PeerName)

Gibt das PeerContact-Objekt für den angegebenen PeerName zurück.Returns the PeerContact object for the specified PeerName.

GetContacts() GetContacts() GetContacts() GetContacts()

Gibt eine PeerContactCollection zurück, die alle Kontakte im ContactManager des Remotepeers enthält.Returns a PeerContactCollection that contains all contacts within the ContactManager of the remote peer.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)
UpdateContact(PeerContact) UpdateContact(PeerContact) UpdateContact(PeerContact) UpdateContact(PeerContact)

Aktualisiert die dem PeerContact zugeordneten Daten.Updates the data associated with the PeerContact.

Ereignisse

ApplicationChanged ApplicationChanged ApplicationChanged ApplicationChanged

Wird immer ausgelöst, wenn eine PeerApplication, die einem PeerContact im ContactManager zugeordnet ist, geändert wurde.Raised whenever a PeerApplication associated with a PeerContact in the ContactManager has changed.

CreateContactCompleted CreateContactCompleted CreateContactCompleted CreateContactCompleted

Wird immer ausgelöst, wenn eine CreateContact(PeerNearMe)-Methode abgeschlossen wurde.Raised whenever a CreateContact(PeerNearMe) method has completed.

NameChanged NameChanged NameChanged NameChanged

Wird immer ausgelöst, wenn der PeerName, der einem PeerContact im ContactManager zugeordnet ist, geändert wurde.Raised whenever the PeerName associated with a PeerContact in the ContactManager has changed.

ObjectChanged ObjectChanged ObjectChanged ObjectChanged

Wird immer ausgelöst, wenn ein Objekt in registrierten PeerObject-Objekten eines Kontakts geändert wurde.Raised whenever an object within a contact's registered PeerObject objects has changed.

PresenceChanged PresenceChanged PresenceChanged PresenceChanged

Wird immer ausgelöst, wenn der Anwesenheitsstatus eines PeerContact im ContactManager geändert wurde.Raised whenever the presence status of a PeerContact in the ContactManager has changed.

SubscriptionListChanged SubscriptionListChanged SubscriptionListChanged SubscriptionListChanged

Wird ausgelöst, wenn die Liste abonnierter Kontakte geändert wird.Raised when the list of subscribed contacts changes.

Gilt für:

Siehe auch