ContactManager Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ů. |