ContactManager Класс

Определение

Представляет коллекцию объектов PeerContact, хранящихся в адресной книге Windows.Represents a collection of PeerContact objects which persist in a Windows Address Book.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Наследование
ContactManager
Реализации

Примеры

В следующем примере кода показано, как перечислить PeerNearMe и добавить его в PeerContact локальную систему ContactManager :The following example code illustrates how to enumerate a PeerNearMe and add it as a PeerContact to the local 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;
}

Комментарии

Этот класс не имеет открытых конструкторов, так как ссылка на него возвращается PeerCollaboration классом.This class has no public constructors, since a reference to it is returned by the PeerCollaboration class.

К адресным книгам, связанным с управлением, относятся те, которые связаны PeerContact с одноранговым узлом узла и удаленным одноранговым узлом.Address books that are associated with PeerContact management include those associated with the host peer and a remote peer. Любой компьютер может совместно работать с другими одноранговыми узлами. Если одноранговый узел является локальным для удаленного однорангового узла, но не является одноранговым узлом, его можно добавить в узел ContactManager узла.Either computer may collaborate with other peers; when a peer is local to the remote peer but not the host peer, it can be added to the ContactManager of the host peer. Определенные операции с ContactManager классом, такие как AddContact и DeleteContact , сопоставляются с связанными операциями, выполняемыми в адресной книге Windows удаленного узла.Certain operations on the ContactManager class, such as AddContact and DeleteContact, correlate to the associated operations being performed on the Windows Address book of the remote peer.

Одноранговый узел имеет доступ к этому постоянному хранилищу для PeerContact получения сведений, которые могут быть связаны с приложениями, в которых может участвовать одноранговый узел.The host peer has access to this persistent storage for PeerContact information, which can be associated with the applications in which a peer intends to participate. PeerApplicationМожет идентифицировать себя как пользователь ContactManager постоянного хранилища на компьютере.A PeerApplication can identify itself as a user of a ContactManager persistent store on a computer.

Свойства

LocalContact

Возвращает объект PeerContact, представляющий локальный одноранговый узел.Gets the PeerContact representing the local peer.

SynchronizingObject

Если задано значение этого свойства, со всеми событиями, не просигналившими в результате асинхронной операции, будут связаны обработчики событий, осуществляющие обратный вызов в потоке, создавшем конкретный объект SynchronizingObject.When this property value is set, all events not fired as the result of an asynchronous operation will have the associated event handlers called back on the thread that created the specific SynchronizingObject.

Методы

AddContact(PeerContact)

Добавляет указанный элемент PeerContact в ContactManager локального однорангового узла.Adds the specified PeerContact to the ContactManager of the local peer.

CreateContact(PeerNearMe)

Создает экземпляр объекта PeerContact для указанного объекта PeerNearMe.Creates a PeerContact instance for the specified PeerNearMe object.

CreateContactAsync(PeerNearMe, Object)

Создает экземпляр контакта для указанного объекта PeerNearMe.Creates a contact instance for the specified PeerNearMe object.

DeleteContact(PeerContact)

Удаляет указанный элемент PeerContact из ContactManager локального однорангового узла.Removes the specified PeerContact from the ContactManager of the local peer.

DeleteContact(PeerName)

Удаляет PeerContact (связывается с указанным свойством PeerName из ContactManager однорангового узла).Removes the PeerContact associated with the specified PeerName from the ContactManager of the local peer.

Dispose()

Освобождает все ресурсы, используемые объектом ContactManager.Releases all resources used by the ContactManager object.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetContact(PeerName)

Возвращает объект PeerContact для заданного имени однорангового узла PeerName.Returns the PeerContact object for the specified PeerName.

GetContacts()

Возвращает коллекцию PeerContactCollection, содержащую все контакты из коллекции ContactManager удаленного однорангового узла.Returns a PeerContactCollection that contains all contacts within the ContactManager of the remote peer.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
UpdateContact(PeerContact)

Обновляет данные, связанные с PeerContact.Updates the data associated with the PeerContact.

События

ApplicationChanged

Вызывается при изменении объекта PeerApplication, связанного с контактом PeerContact в диспетчере контактов ContactManager.Raised whenever a PeerApplication associated with a PeerContact in the ContactManager has changed.

CreateContactCompleted

Вызывается при завершении метода CreateContact(PeerNearMe).Raised whenever a CreateContact(PeerNearMe) method has completed.

NameChanged

Вызывается при изменении объекта PeerName, связанного с объектом PeerContact в коллекции ContactManager.Raised whenever the PeerName associated with a PeerContact in the ContactManager has changed.

ObjectChanged

Вызывается при изменении одного из зарегистрированных в контакте объектов PeerObject.Raised whenever an object within a contact's registered PeerObject objects has changed.

PresenceChanged

Вызывается при изменении состояния присутствия объекта PeerContact в коллекции ContactManager.Raised whenever the presence status of a PeerContact in the ContactManager has changed.

SubscriptionListChanged

Вызывается при изменении списка подписанных контактов.Raised when the list of subscribed contacts changes.

Применяется к

См. также раздел