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 |
Вызывается при изменении списка подписанных контактов. |