Events can be raised by several classes in Microsoft Lync 2010 as the state of the class instance changes. A state change can be the result of an action by the self-user or it can be the result of an action by a remote contact. When a state change involves the addition of an item to a collection, you should use an event handler to register for events on the new item added with the event. When an item is removed, use the event handler to remove an event registration on the removed collection item.
For example, when a group is added to the
Events are also raised when the state of an object such as a
modality changes. For example, the
Registering for Events
The following example registers the application for the ContactAddedevent of the group, designating group_ContactAddedas the method to be triggered by the event. Note that the syntax below is auto-completed by Visual Studio.
C# | Copy Code |
---|---|
thisGroup.ContactAdded +=new System.EventHandler<Object,GroupMemberChangedEventArgs>(group_ContactAdded); |
You can create the same event registration using a shorter form of the previous syntax. Note that when you do not use the auto-complete feature to write the registering statement, the event handler method is not auto-generated.
Copy Code | |
---|---|
thisGroup.ContactAdded += group_ContactAdded; |
Handling Events
Events are raised when the state of the object is changed. For example, the ContactAddedevent is raised on a group when the state of the group is updated with the addition of a new contact. If your application registered for the ContactAddedevent on a group, as described earlier, and a contact is added to the group, the event handler defined in the registration is called. In the following example, the group_ContactAddedevent handler updates the user interface and subscribes to presence items and registers for events on the new contact.
C# | Copy Code |
---|---|
void group_ContactAdded(object source, GroupMemberChangedEventArgs data) { // Update application UI with event notification. System.Windows.Forms.MessageBox.Show( "New Contact in Group: " + ((Group)source).Name + " : " + data.Contact.GetContactInformation(ContactInformationType.DisplayName).ToString()); // Listen for contact events. data.Contact.SettingChanged += contact_SettingChanged; data.Contact.ContactInformationChanged += contact_ContactInformationChanged; data.Contact.UriChanged += contact_UriChanged; } |
Removing Event Registration
Remove your registrations for events when the object is disposed of. Event registration removal ensures that memory resources are not wasted. You remove a registration with one line of code.
For example, the following code is the event handler called when a contact is removed from a group. This code removes the contact from the client's subscription and cancels the registration for each event for the contact.
C# | Copy Code |
---|---|
void group_ContactRemoved(object source, GroupMemberChangedEventArgs data) { // Update application UI with event notification. System.Windows.Forms.MessageBox.Show( "Contact was removed from Group: " + ((Group)source).Name); data.Contact.ContactPropertyChanged -= contact_SettingChanged; data.Contact.PresenceItemsChanged -= contact_ContactInformationChanged; data.Contact.UriChanged -= contact_UriChanged; } |