Udostępnij za pośrednictwem


ContactManager Klasa

Definicja

Reprezentuje kolekcję PeerContact obiektów, które są utrwalane w książce adresowej systemu 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 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 do 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 na ContactManager klasie, takie jak AddContact i DeleteContact, są skorelowane ze skojarzonymi operacjami wykonywanymi w książce adresowej systemu Windows zdalnego elementu równorzędnego.

Element równorzędny hosta ma dostęp do tego magazynu trwałego w celu uzyskania 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 magazynu trwałego na komputerze.

Właściwości

LocalContact

PeerContact Pobiera element reprezentujący lokalny element równorzędny.

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 elementu równorzędnego lokalnego.

CreateContact(PeerNearMe)

Tworzy PeerContact 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 ContactManager lokalnego elementu równorzędnego.

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 obiekt PeerContactCollection , który zawiera wszystkie kontakty w ramach ContactManager elementu równorzędnego zdalnego.

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)

Aktualizacje dane skojarzone z elementem PeerContact.

Zdarzenia

ApplicationChanged

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

CreateContactCompleted

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

NameChanged

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

ObjectChanged

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

PresenceChanged

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

SubscriptionListChanged

Zgłaszane po zmianie listy subskrybowanych kontaktów.

Dotyczy

Zobacz też