/// <summary>
/// Creates a ContactsManager.
- /// </summary>
+ /// </summary>
public ContactsManager()
{
int error = Interop.Contacts.Connect();
}
}
+ /// <summary>
+ /// Releases all resources used by the ContactsManager.
+ /// It should be called after finished using of the object.
+ /// </summary>
public void Dispose()
{
Dispose(true);
{
lock (thisLock)
{
- _displayOrderDelegate = (ContactDisplayOrder nameDisplayOrder, IntPtr userData) =>
+ if (_displayOrderDelegate == null)
{
- NameDisplayOrderChangedEventArgs args = new NameDisplayOrderChangedEventArgs(nameDisplayOrder);
- _nameDisplayOrderChanged?.Invoke(this, args);
- };
- int error = Interop.Setting.AddNameDisplayOrderChangedCB(_displayOrderDelegate, IntPtr.Zero);
- if ((int)ContactsError.None != error)
- {
- Log.Error(Globals.LogTag, "Add NameDisplayOrderChangedCB Failed with error " + error);
+ _displayOrderDelegate = (ContactDisplayOrder nameDisplayOrder, IntPtr userData) =>
+ {
+ NameDisplayOrderChangedEventArgs args = new NameDisplayOrderChangedEventArgs(nameDisplayOrder);
+ _nameDisplayOrderChanged?.Invoke(this, args);
+ };
}
- else
+
+ if (_nameDisplayOrderChanged == null)
{
- _nameDisplayOrderChanged += value;
+ int error = Interop.Setting.AddNameDisplayOrderChangedCB(_displayOrderDelegate, IntPtr.Zero);
+ if ((int)ContactsError.None != error)
+ {
+ Log.Error(Globals.LogTag, "Add NameDisplayOrderChangedCB Failed with error " + error);
+ }
}
- }
+ _nameDisplayOrderChanged += value;
+ }
}
remove
{
lock (thisLock)
{
- int error = Interop.Setting.RemoveNameDisplayOrderChangedCB(_displayOrderDelegate, IntPtr.Zero);
- if ((int)ContactsError.None != error)
+ _nameDisplayOrderChanged -= value;
+
+ if (_nameDisplayOrderChanged == null)
{
- Log.Error(Globals.LogTag, "Remove StateChanged Failed with error " + error);
+ int error = Interop.Setting.RemoveNameDisplayOrderChangedCB(_displayOrderDelegate, IntPtr.Zero);
+ if ((int)ContactsError.None != error)
+ {
+ Log.Error(Globals.LogTag, "Remove StateChanged Failed with error " + error);
+ }
}
-
- _nameDisplayOrderChanged -= value;
}
}
-
}
/// <summary>
{
lock (thisLock)
{
- _sortingOrderDelegate = (ContactSortingOrder nameSortingOrder, IntPtr userData) =>
- {
- NameSortingOrderChangedEventArgs args = new NameSortingOrderChangedEventArgs(nameSortingOrder);
- _nameSortingOrderChanged?.Invoke(this, args);
- };
- int error = Interop.Setting.AddNameSortingOrderChangedCB(_sortingOrderDelegate, IntPtr.Zero);
- if ((int)ContactsError.None != error)
+ if (_sortingOrderDelegate == null)
{
- Log.Error(Globals.LogTag, "Add NameSortingOrderChangedCB Failed with error " + error);
+ _sortingOrderDelegate = (ContactSortingOrder nameSortingOrder, IntPtr userData) =>
+ {
+ NameSortingOrderChangedEventArgs args = new NameSortingOrderChangedEventArgs(nameSortingOrder);
+ _nameSortingOrderChanged?.Invoke(this, args);
+ };
}
- else
+
+ if (_nameSortingOrderChanged == null)
{
- _nameSortingOrderChanged += value;
+ int error = Interop.Setting.AddNameSortingOrderChangedCB(_sortingOrderDelegate, IntPtr.Zero);
+ if ((int)ContactsError.None != error)
+ {
+ Log.Error(Globals.LogTag, "Add NameSortingOrderChangedCB Failed with error " + error);
+ }
}
- }
+ _nameSortingOrderChanged += value;
+ }
}
remove
{
lock (thisLock)
{
- int error = Interop.Setting.RemoveNameSortingOrderChangedCB(_sortingOrderDelegate, IntPtr.Zero);
- if ((int)ContactsError.None != error)
+ _nameSortingOrderChanged -= value;
+
+ if (_nameSortingOrderChanged == null)
{
- Log.Error(Globals.LogTag, "Remove StateChanged Failed with error " + error);
+ int error = Interop.Setting.RemoveNameSortingOrderChangedCB(_sortingOrderDelegate, IntPtr.Zero);
+ if ((int)ContactsError.None != error)
+ {
+ Log.Error(Globals.LogTag, "Remove StateChanged Failed with error " + error);
+ }
}
-
- _nameSortingOrderChanged -= value;
}
}
-
}
/// <summary>