/// <summary> /// Set information for a specific addressbook. /// </summary> /// <param name="abId">AddressBook guid.</param> /// <param name="abHeader">The addressbook info.</param> internal void SetAddressBookInfo(Guid abId, ABFindContactsPagedResultTypeAB abHeader) { SetAddressBookInfo(abId.ToString("D"), abHeader); }
/// <summary> /// Set information for a specific addressbook. /// </summary> /// <param name="abId">AddressBook guid.</param> /// <param name="abHeader">The addressbook info.</param> internal void SetAddressBookInfo(string abId, ABFindContactsPagedResultTypeAB abHeader) { lock (SyncObject) { string lowerId = abId.ToLowerInvariant(); string compareTime = GetAddressBookLastChange(lowerId); try { DateTime oldTime = WebServiceDateTimeConverter.ConvertToDateTime(compareTime); DateTime newTime = WebServiceDateTimeConverter.ConvertToDateTime(abHeader.lastChange); if (oldTime >= newTime) { Trace.WriteLineIf(Settings.TraceSwitch.TraceVerbose, "Update addressbook information skipped, abId: " + abId + ", LastChange: " + abHeader.lastChange + ", compared with: " + compareTime); return; //Not necessary to update. } } catch (Exception ex) { Trace.WriteLineIf(Settings.TraceSwitch.TraceError, "An error occured while setting AddressBook LastChange property, abId: " + abId + ", LastChange: " + abHeader.lastChange + "\r\nError message: " + ex.Message); return; } SetAddressBookInfoToABInfoList(lowerId, abHeader); Trace.WriteLineIf(Settings.TraceSwitch.TraceVerbose, "Update addressbook information succeed, abId: " + abId + ", LastChange: " + abHeader.lastChange + ", compared with: " + compareTime); } }
private bool SetAddressBookInfoToABInfoList(string abId, ABFindContactsPagedResultTypeAB abInfo) { string lowerId = abId.ToLowerInvariant(); if (AddressBooksInfo == null) return false; lock (AddressBooksInfo) AddressBooksInfo[lowerId] = abInfo; return true; }