ContactManager Klasse

Definition

Stellt eine Auflistung von PeerContact-Objekten dar, die in einem Windows-Adressbuch beibehalten werden.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Vererbung
ContactManager
Implementiert

Beispiele

Der folgende Beispielcode veranschaulicht, wie sie eine PeerNearMe aufzählen und dem lokalen ContactManagerals a PeerContact hinzufügen:

// 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, da von der PeerCollaboration -Klasse ein Verweis darauf zurückgegeben wird.

Adressbücher, die der PeerContact Verwaltung zugeordnet sind, umfassen diejenigen, die dem Hostpeer und einem Remotepeer zugeordnet sind. Beide Computer können mit anderen Peers zusammenarbeiten. wenn ein Peer lokal für den Remotepeer, aber nicht für den Hostpeer ist, kann er dem ContactManager des Hostpeers hinzugefügt werden. Bestimmte Vorgänge für die ContactManager -Klasse, z AddContact . B. und DeleteContact, korrelieren mit den zugeordneten Vorgängen, die im Windows-Adressbuch des Remotepeers ausgeführt werden.

Der Hostpeer hat Zugriff auf diesen persistenten Speicher, PeerContact um Informationen zu erhalten, die den Anwendungen zugeordnet werden können, an denen ein Peer teilnehmen möchte. Ein PeerApplication kann sich als Benutzer eines ContactManager persistenten Speichers auf einem Computer identifizieren.

Eigenschaften

LocalContact

Ruft den PeerContact ab, der den lokalen Peer darstellt.

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.

Methoden

AddContact(PeerContact)

Fügt den angegebenen PeerContact dem ContactManager des lokalen Peers hinzu.

CreateContact(PeerNearMe)

Erstellt eine PeerContact-Instanz für das angegebene PeerNearMe-Objekt.

CreateContactAsync(PeerNearMe, Object)

Erstellt eine Kontaktinstanz für das angegebene PeerNearMe-Objekt.

DeleteContact(PeerContact)

Entfernt den angegebenen PeerContact aus dem ContactManager des lokalen Peers.

DeleteContact(PeerName)

Entfernt den PeerContact, der dem angegebenen PeerName aus dem ContactManager des lokalen Peers zugeordnet ist.

Dispose()

Gibt alle vom ContactManager-Objekt verwendeten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetContact(PeerName)

Gibt das PeerContact-Objekt für den angegebenen PeerName zurück.

GetContacts()

Gibt eine PeerContactCollection zurück, die alle Kontakte im ContactManager des Remotepeers enthält.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
UpdateContact(PeerContact)

Aktualisiert die dem PeerContact zugeordneten Daten.

Ereignisse

ApplicationChanged

Wird immer ausgelöst, wenn eine PeerApplication, die einem PeerContact im ContactManager zugeordnet ist, geändert wurde.

CreateContactCompleted

Wird immer ausgelöst, wenn eine CreateContact(PeerNearMe)-Methode abgeschlossen wurde.

NameChanged

Wird immer ausgelöst, wenn der PeerName, der einem PeerContact im ContactManager zugeordnet ist, geändert wurde.

ObjectChanged

Wird immer ausgelöst, wenn ein Objekt in registrierten PeerObject-Objekten eines Kontakts geändert wurde.

PresenceChanged

Wird immer ausgelöst, wenn der Anwesenheitsstatus eines PeerContact im ContactManager geändert wurde.

SubscriptionListChanged

Wird ausgelöst, wenn die Liste abonnierter Kontakte geändert wird.

Gilt für:

Weitere Informationen