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

Im folgenden Beispielcode wird veranschaulicht, wie sie ein Element PeerNearMe aufzählen und dem lokalen ContactManagerhinzufügenPeerContact:

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

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

Der Host-Peer hat Zugriff auf diesen beständigen Speicher für PeerContact Informationen, die den Anwendungen zugeordnet werden können, an denen ein Peer teilnehmen möchte. Ein PeerApplication Kann sich selbst als Benutzer eines ContactManager beständigen Speichers auf einem Computer identifizieren.

Eigenschaften

Name Beschreibung
LocalContact

Ruft den PeerContact lokalen Peer ab.

SynchronizingObject

Wenn dieser Eigenschaftswert festgelegt wird, werden alle Ereignisse, die nicht als Ergebnis eines asynchronen Vorgangs ausgelöst werden, die zugeordneten Ereignishandler auf dem Thread zurückgerufen, der die spezifischen SynchronizingObjectEreignisse erstellt hat.

Methoden

Name Beschreibung
AddContact(PeerContact)

Fügt den angegebenen PeerContact Wert zum ContactManager lokalen Peer 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 Wert aus dem ContactManager lokalen Peer.

DeleteContact(PeerName)

Entfernt den PeerContact zugehörigen Wert PeerName aus dem ContactManager lokalen Peer.

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 das angegebene PeerNameObjekt zurück.

GetContacts()

Gibt einen PeerContactCollection Wert zurück, der ContactManager alle Kontakte innerhalb des Remote-Peers enthält.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)
UpdateContact(PeerContact)

Aktualisiert die daten, die mit der PeerContact.

Ereignisse

Name Beschreibung
ApplicationChanged

Wird ausgelöst, wenn sich ein PeerApplication element PeerContact in der ContactManager Datei geändert hat.

CreateContactCompleted

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

NameChanged

Wird ausgelöst, wenn sich die zuordnungsbezogenen PeerNamePeerContact Änderungen in der ContactManager Datei geändert haben.

ObjectChanged

Wird ausgelöst, wenn sich ein Objekt innerhalb der registrierten PeerObject Objekte eines Kontakts geändert hat.

PresenceChanged

Wird ausgelöst, wenn sich der Anwesenheitsstatus eines PeerContact Ins ContactManager geändert hat.

SubscriptionListChanged

Wird ausgelöst, wenn sich die Liste der abonnierten Kontakte ändert.

Gilt für:

Weitere Informationen