ContactManager Klasa

Definicja

Reprezentuje kolekcję PeerContact obiektów, które utrzymują się w książce adresowej Windows.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Dziedziczenie
ContactManager
Implementuje

Przykłady

Poniższy przykładowy kod ilustruje sposób wyliczania PeerNearMe elementu i dodawania go jako elementu PeerContact do lokalnego ContactManagerelementu :

// 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;
}

Uwagi

Ta klasa nie ma publicznych konstruktorów, ponieważ odwołanie do niej jest zwracane przez klasę PeerCollaboration .

Książki adresowe skojarzone z PeerContact zarządzaniem obejmują te skojarzone z elementem równorzędnym hosta i zdalnym elementem równorzędnym. Jeden z komputerów może współpracować z innymi elementami równorzędnymi; gdy element równorzędny jest lokalny dla zdalnej komunikacji równorzędnej, ale nie do elementu równorzędnego hosta, można go dodać do ContactManager elementu równorzędnego hosta. Niektóre operacje w ContactManager klasie, takie jak AddContact i DeleteContact, są skorelowane ze skojarzonymi operacjami wykonywanymi w książce adresowej Windows zdalnej komunikacji równorzędnej.

Element równorzędny hosta ma dostęp do tego trwałego magazynu dla PeerContact informacji, które mogą być skojarzone z aplikacjami, w których element równorzędny zamierza uczestniczyć. Element PeerApplication może identyfikować się jako użytkownik ContactManager trwałego magazynu na komputerze.

Właściwości

LocalContact

Pobiera reprezentację PeerContact lokalnej komunikacji równorzędnej.

SynchronizingObject

Po ustawieniu tej wartości właściwości wszystkie zdarzenia, które nie zostały wyzwolone w wyniku operacji asynchronicznej, będą miały skojarzone programy obsługi zdarzeń wywoływane z powrotem w wątku, który utworzył określony SynchronizingObjectelement .

Metody

AddContact(PeerContact)

Dodaje określony PeerContact element do ContactManager lokalnej komunikacji równorzędnej.

CreateContact(PeerNearMe)

PeerContact Tworzy wystąpienie dla określonego PeerNearMe obiektu.

CreateContactAsync(PeerNearMe, Object)

Tworzy wystąpienie kontaktu dla określonego PeerNearMe obiektu.

DeleteContact(PeerContact)

Usuwa określony PeerContact element z lokalnej komunikacji równorzędnej ContactManager .

DeleteContact(PeerName)

PeerContact Usuwa element skojarzony z określonym PeerName elementem równorzędnym ContactManager z lokalnym elementem równorzędnym.

Dispose()

Zwalnia wszystkie zasoby używane przez ContactManager obiekt.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetContact(PeerName)

PeerContact Zwraca obiekt dla określonego PeerNameobiektu .

GetContacts()

Zwraca element PeerContactCollection zawierający wszystkie kontakty w ContactManager ramach zdalnej komunikacji równorzędnej.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
UpdateContact(PeerContact)

Aktualizuje dane skojarzone z elementem PeerContact.

Zdarzenia

ApplicationChanged

Podniesione PeerApplication za każdym razem, gdy element skojarzony z elementem PeerContact w obiekcie ContactManager uległ zmianie.

CreateContactCompleted

Podniesione za każdym razem, gdy CreateContact(PeerNearMe) metoda została ukończona.

NameChanged

Podniesione PeerName za każdym razem, gdy element skojarzony z elementem PeerContact w obiekcie ContactManager uległ zmianie.

ObjectChanged

Podniesione za każdym razem, gdy obiekt w zarejestrowanych PeerObject obiektach kontaktu uległ zmianie.

PresenceChanged

Podniesione za każdym razem, gdy stan PeerContact obecności obiektu w obiekcie ContactManager uległ zmianie.

SubscriptionListChanged

Podniesione po zmianie listy subskrybowanych kontaktów.

Dotyczy

Zobacz też