Поделиться через


ContactManager Класс

Определение

Представляет коллекцию объектов PeerContact, хранящихся в адресной книге Windows.

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:

// 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 .

Адресные книги, связанные с PeerContact управлением, включают те, которые связаны с узлом узла и удаленным одноранговым узлом. Любой компьютер может работать совместно с другими одноранговыми узлами; Если одноранговый узел является локальным для удаленного однорангового узла, но не является узлом узла, его можно добавить в ContactManager узел узла. Некоторые операции с классом ContactManager , такие как AddContact и DeleteContact, коррелируют со связанными операциями, выполняемыми в адресной книге Windows удаленного однорангового узла.

Одноранговый узел узла имеет доступ к этому постоянному хранилищу информации PeerContact , которая может быть связана с приложениями, в которых планирует участвовать одноранговый узел. может PeerApplication идентифицировать себя как пользователя постоянного ContactManager хранилища на компьютере.

Свойства

LocalContact

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

SynchronizingObject

Если задано значение этого свойства, со всеми событиями, не просигналившими в результате асинхронной операции, будут связаны обработчики событий, осуществляющие обратный вызов в потоке, создавшем конкретный объект SynchronizingObject.

Методы

AddContact(PeerContact)

Добавляет указанный элемент PeerContact в ContactManager локального однорангового узла.

CreateContact(PeerNearMe)

Создает экземпляр объекта PeerContact для указанного объекта PeerNearMe.

CreateContactAsync(PeerNearMe, Object)

Создает экземпляр контакта для указанного объекта PeerNearMe.

DeleteContact(PeerContact)

Удаляет указанный элемент PeerContact из ContactManager локального однорангового узла.

DeleteContact(PeerName)

Удаляет PeerContact (связывается с указанным свойством PeerName из ContactManager однорангового узла).

Dispose()

Освобождает все ресурсы, используемые объектом ContactManager.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

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

GetContacts()

Возвращает коллекцию PeerContactCollection, содержащую все контакты из коллекции ContactManager удаленного однорангового узла.

GetHashCode()

Служит хэш-функцией по умолчанию.

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

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

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

Создает неполную копию текущего объекта Object.

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

Возвращает строку, представляющую текущий объект.

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

Обновляет данные, связанные с PeerContact.

События

ApplicationChanged

Вызывается при изменении объекта PeerApplication, связанного с контактом PeerContact в диспетчере контактов ContactManager.

CreateContactCompleted

Вызывается при завершении метода CreateContact(PeerNearMe).

NameChanged

Вызывается при изменении объекта PeerName, связанного с объектом PeerContact в коллекции ContactManager.

ObjectChanged

Вызывается при изменении одного из зарегистрированных в контакте объектов PeerObject.

PresenceChanged

Вызывается при изменении состояния присутствия объекта PeerContact в коллекции ContactManager.

SubscriptionListChanged

Вызывается при изменении списка подписанных контактов.

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

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