public void Dispose() { if (_disposed) return; ObjectStateNotifier.RemoveObserver(this); try { var i = Marshal.ReleaseComObject(_exchangeClient); Thread.Sleep(10); while (i > 0) { LogManager.WriteLog("Number of objects in _exchangeClient = " + i, LogManager.enumLogLevel.Info); i = Marshal.ReleaseComObject(_exchangeClient); } LogManager.WriteLog("|=> _exchangeClient was released successfully.", LogManager.enumLogLevel.Info); i = Marshal.ReleaseComObject(_iExchangeAdmin); Thread.Sleep(10); while (i > 0) { LogManager.WriteLog("Number of objects in _iExchangeAdmin = " + i, LogManager.enumLogLevel.Info); i = Marshal.ReleaseComObject(_iExchangeAdmin); } LogManager.WriteLog("|=> _iExchangeAdmin was released successfully.", LogManager.enumLogLevel.Info); } catch { } _iExchangeAdmin = null; _exchangeClient = null; GC.SuppressFinalize(this); }
public void Dispose() { if (_disposed) { return; } ObjectStateNotifier.RemoveObserver(this); try { Releaseobject(_exchangeClientSiteCode, "_exchangeClientSiteCode"); Releaseobject(_exchangeClientTITOEnDis, "_exchangeClientTITOEnDis"); Releaseobject(_exchangeClientTITOEXP, "_exchangeClientTITOEXP"); Releaseobject(_iExchangeAdminSiteCode, "_iExchangeAdminSiteCode"); Releaseobject(_iExchangeAdminTITOEnDis, "_iExchangeAdminTITOEnDis"); Releaseobject(_iExchangeAdminTITOEXP, "_iExchangeAdminTITOEXP"); LogManager.WriteLog("Dispose | All Objects were released successfully.", LogManager.enumLogLevel.Info); } catch { } _exchangeClientSiteCode = null; _exchangeClientTITOEnDis = null; _exchangeClientTITOEXP = null; _iExchangeAdminSiteCode = null; _iExchangeAdminTITOEnDis = null; _iExchangeAdminTITOEXP = null; GC.SuppressFinalize(this); }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> private void Dispose(bool disposing) { if (!disposed) { if (disposing) { ObjectStateNotifier.RemoveObserver(this); _threadIndexes.Clear(); _threadContainers.Clear(); LogManager.WriteLog("|=> ThreadDispatcher disposed.", LogManager.enumLogLevel.Info); } disposed = true; } }