ContactManager Kelas

Definisi

Mewakili kumpulan PeerContact objek yang bertahan dalam Buku Alamat Windows.

public ref class ContactManager sealed : IDisposable
public sealed class ContactManager : IDisposable
type ContactManager = class
    interface IDisposable
Public NotInheritable Class ContactManager
Implements IDisposable
Warisan
ContactManager
Penerapan

Contoh

Contoh kode berikut mengilustrasikan cara menghitung PeerNearMe dan menambahkannya sebagai PeerContact ke lokal 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;
}

Keterangan

Kelas ini tidak memiliki konstruktor publik, karena referensi ke kelas tersebut dikembalikan oleh PeerCollaboration kelas .

Buku alamat yang terkait dengan PeerContact manajemen mencakup buku yang terkait dengan rekan host dan serekan jarak jauh. Salah satu komputer dapat berkolaborasi dengan rekan-rekan lain; ketika serekan lokal ke peer jarak jauh tetapi bukan serekan host, itu dapat ditambahkan ke ContactManager peer host. Operasi tertentu pada ContactManager kelas , seperti AddContact dan DeleteContact, berkorelasi dengan operasi terkait yang dilakukan pada buku Alamat Windows dari peer jarak jauh.

Serekan host memiliki akses ke penyimpanan persisten ini untuk PeerContact informasi, yang dapat dikaitkan dengan aplikasi di mana serekan berniat untuk berpartisipasi. PeerApplication dapat mengidentifikasi dirinya sebagai pengguna ContactManager penyimpanan persisten di komputer.

Properti

LocalContact

Mendapatkan yang PeerContact mewakili peer lokal.

SynchronizingObject

Ketika nilai properti ini diatur, semua peristiwa yang tidak diaktifkan sebagai hasil dari operasi asinkron akan memiliki penanganan aktivitas terkait yang dipanggil kembali pada utas yang membuat spesifik SynchronizingObject.

Metode

AddContact(PeerContact)

Menambahkan yang ditentukan PeerContact ke ContactManager serekan lokal.

CreateContact(PeerNearMe)

Membuat instans PeerContact untuk objek yang ditentukan PeerNearMe .

CreateContactAsync(PeerNearMe, Object)

Membuat instans kontak untuk objek yang ditentukan PeerNearMe .

DeleteContact(PeerContact)

Menghapus yang ditentukan PeerContact dari ContactManager peer lokal.

DeleteContact(PeerName)

Menghapus yang PeerContact terkait dengan yang ditentukan PeerName dari ContactManager peer lokal.

Dispose()

Merilis semua sumber daya yang ContactManager digunakan oleh objek .

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetContact(PeerName)

Mengembalikan PeerContact objek untuk yang ditentukan PeerName.

GetContacts()

Mengembalikan yang PeerContactCollection berisi semua kontak dalam ContactManager serekan jarak jauh.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
UpdateContact(PeerContact)

Updates data yang terkait dengan PeerContact.

Acara

ApplicationChanged

Dimunculkan setiap kali yang PeerApplication terkait dengan PeerContact dalam ContactManager telah berubah.

CreateContactCompleted

Dimunculkan setiap kali CreateContact(PeerNearMe) metode selesai.

NameChanged

Dimunculkan setiap kali yang PeerName terkait dengan PeerContact dalam ContactManager telah berubah.

ObjectChanged

Dimunculkan setiap kali objek dalam objek terdaftar PeerObject kontak telah berubah.

PresenceChanged

Dinaikkan setiap kali status kehadiran di PeerContactContactManager telah berubah.

SubscriptionListChanged

Muncul saat daftar kontak berlangganan berubah.

Berlaku untuk

Lihat juga