ContactManager Třída

Definice

Představuje kolekci PeerContact objektů, které zůstávají v adresáři systému 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 PeerContact do místního ContactManager:

// 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, které jsou přidružené ke PeerContact správě, zahrnují adresáře přidružené k hostitelskému partnerskému a vzdálenému partnerskému vztahu. Jeden z počítačů může spolupracovat s jinými kolegy; pokud je partnerský uzel místní pro vzdálený partnerský uzel, ale ne hostitelský partnerský uzel, může být přidán do ContactManager partnerského vztahu hostitele. Určité operace ve ContactManager třídě, například AddContact a DeleteContact, korelují s přidruženými operacemi prováděnými v adresáři systému Windows vzdáleného partnerského vztahu.

Partner hostitele má přístup k tomuto trvalému úložišti PeerContact informací, které lze přidružit k aplikacím, kterých se chce partnerský uzel účastnit. Uživatel PeerApplication se může identifikovat jako uživatel ContactManager trvalého úložiště na počítači.

Vlastnosti

LocalContact

PeerContact Získá představující místní partnerský uzel.

SynchronizingObject

Když je tato hodnota vlastnosti nastavena, všechny události, které se neaktivují 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

AddContact(PeerContact)

Přidá zadaný PeerContact parametr do ContactManager místního partnerského vztahu.

CreateContact(PeerNearMe)

Vytvoří PeerContact instanci pro zadaný PeerNearMe objekt.

CreateContactAsync(PeerNearMe, Object)

Vytvoří instanci kontaktu pro zadaný PeerNearMe objekt.

DeleteContact(PeerContact)

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

DeleteContact(PeerName)

Odebere přidruženou PeerContact k zadanému PeerName z ContactManager místního partnerského vztahu.

Dispose()

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

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

PeerContact Vrátí objekt pro zadaný PeerNameobjekt .

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í hashovací funkce.

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

Získá aktuální Type instanci.

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

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

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

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

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

Aktualizace data přidružená k PeerContact.

Událost

ApplicationChanged

Vyvolá se vždy, když se PeerApplication změní přidružený k nějakému PeerContact v souboru ContactManager .

CreateContactCompleted

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

NameChanged

Vyvolá se vždy, když se PeerName změnila hodnota přidružená k sadě PeerContactContactManager .

ObjectChanged

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

PresenceChanged

Vyvolá se pokaždé, když se změní stav PeerContact v souboru ContactManager .

SubscriptionListChanged

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

Platí pro

Viz také