/// <summary> /// Dispose implementation which ensures the native window is destroyed, and /// managed resources detached. /// </summary> private void Dispose(bool disposeManaged) { if (!disposed) { disposed = true; if (disposeManaged) { if (networkRelay != null) { networkRelay.Dispose(); networkRelay = null; } if (MessageReceived != null) { // remove all handlers Delegate[] del = MessageReceived.GetInvocationList(); foreach (XDMessageHandler msg in del) { MessageReceived -= msg; } } if (this.Handle != IntPtr.Zero) { this.DestroyHandle(); this.Dispose(); } } } }
/// <summary> /// Dispose implementation, which ensures the native window is destroyed /// </summary> private void Dispose(bool disposeManaged) { if (!disposed) { disposed = true; if (disposeManaged) { if (networkRelay != null) { networkRelay.Dispose(); networkRelay = null; } if (MessageReceived != null) { // remove all handlers Delegate[] del = MessageReceived.GetInvocationList(); foreach (TheCodeKing.Net.Messaging.XDListener.XDMessageHandler msg in del) { MessageReceived -= msg; } } if (watcherList != null) { // shut down watchers foreach (FileSystemWatcher watcher in watcherList.Values) { watcher.EnableRaisingEvents = false; watcher.Changed -= new FileSystemEventHandler(OnMessageReceived); watcher.Dispose(); } watcherList.Clear(); watcherList = null; } } } }