Jazyk

ContactManager Třída

Definice

Představuje kolekci objektů PeerContact, které se uchovávají v adresáři Windows.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Dědičnost
ContactManager
Implementuje

Příklady

Následující příklad kódu ukazuje, jak vytvořit výčet PeerNearMe a přidat ho jako místní PeerContactContactManager:

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

Poznámky

Tato třída nemá žádné veřejné konstruktory, protože odkaz na ni je vrácen PeerCollaboration třídou.

Adresáře přidružené ke PeerContact správě zahrnují ty, které jsou přidružené k partnerskému uzlu hostitele a vzdálenému partnerskému vztahu. Oba počítače mohou spolupracovat s jinými partnerskými partnery; pokud je partnerský vztah místní pro vzdálený partnerský vztah, ale ne partnerský vztah hostitele, můžete ho přidat do ContactManager partnerského vztahu hostitele. Určité operace ve třídě ContactManager, například AddContact a DeleteContact, odpovídají souvisejícím operacím prováděnými na adresáři Windows vzdáleného partnerského vztahu.

Partnerský vztah hostitele má přístup k tomuto trvalému úložišti PeerContact pro informace, které je možné přidružit k aplikacím, kterých se partnerský vztah hodlá účastnit. A PeerApplication může sama sebe identifikovat jako uživatel ContactManager trvalého úložiště v počítači.

Vlastnosti

Name Description
LocalContact

Získá reprezentaci PeerContact místního partnerského vztahu.

SynchronizingObject

Pokud je tato hodnota vlastnosti nastavena, všechny události se neaktivovaly jako výsledek asynchronní operace budou mít přidružené obslužné rutiny událostí volané zpět ve vlákně, které vytvořilo konkrétní SynchronizingObject.

Metody

Name Description
AddContact(PeerContact)

Přidá zadaný PeerContactContactManager do místního partnerského vztahu.

CreateContact(PeerNearMe)

PeerContact Vytvoří instanci pro zadaný PeerNearMe objekt.

CreateContactAsync(PeerNearMe, Object)

Vytvoří instanci kontaktu pro zadaný PeerNearMe objekt.

DeleteContact(PeerContact)

Odebere zadaný PeerContact z ContactManager místního partnerského vztahu.

DeleteContact(PeerName)

Odebere PeerContact přidružené k zadanému PeerNameContactManager z místního partnerského vztahu.

Dispose()

Uvolní všechny prostředky používané objektem ContactManager .

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetContact(PeerName)

PeerContact Vrátí objekt pro zadanou PeerNamehodnotu .

GetContacts()

Vrátí hodnotu PeerContactCollection , která obsahuje všechny kontakty v rámci ContactManager vzdáleného partnerského vztahu.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
UpdateContact(PeerContact)

Aktualizuje data přidružená k souboru PeerContact.

Událost

Name Description
ApplicationChanged

Vyvolá se při každé změně přidruženého PeerApplication k saděPeerContact.ContactManager

CreateContactCompleted

Vyvolá se při každém CreateContact(PeerNearMe) dokončení metody.

NameChanged

Vyvolá se při každé PeerName změně přidruženého k saděPeerContact.ContactManager

ObjectChanged

Vyvolá se při každé změně objektu v registrovaných PeerObject objektech kontaktu.

PresenceChanged

Vyvolá se při každé změně stavu PeerContact přítomnosti v sadě ContactManager .

SubscriptionListChanged

Vyvolá se při změně seznamu odebíraných kontaktů.

Platí pro

Viz také