/// <summary> /// Unregisters a state object from being monitored. /// </summary> /// <param name="item">An <see cref="RasConnectionWatcherStateObject"/> to unregister.</param> private void Unregister(RasConnectionWatcherStateObject item) { if (item != null) { item.WaitHandle.Unregister(item.WaitObject); item.WaitObject.Close(); this._stateObjects.Remove(item); } }
private void Register(NativeMethods.RASCN changeType, RasHandle handle) { AutoResetEvent waitObject = new AutoResetEvent(false); int ret = SafeNativeMethods.Instance.RegisterConnectionNotification(handle, waitObject.SafeWaitHandle, changeType); if (ret == NativeMethods.SUCCESS) { RasConnectionWatcherStateObject stateObject = new RasConnectionWatcherStateObject(changeType); stateObject.WaitObject = waitObject; stateObject.WaitHandle = ThreadPool.RegisterWaitForSingleObject(waitObject, new WaitOrTimerCallback(this.ConnectionStateChanged), stateObject, Timeout.Infinite, false); this._stateObjects.Add(stateObject); } }
/// <summary> /// Stops the watcher from raising events. /// </summary> private void StopRaisingEvents() { if (!this.IsSuspended() && this.EnableRaisingEvents) { int count = this._stateObjects.Count; for (int index = 0; index < count; index++) { RasConnectionWatcherStateObject item = this._stateObjects[0]; if (item != null) { this.Unregister(item); } } } }
/// <summary> /// Unregisters a state object from being monitored. /// </summary> /// <param name="item">An <see cref="RasConnectionWatcherStateObject"/> to unregister.</param> private void Unregister(RasConnectionWatcherStateObject item) { if (item != null) { item.WaitHandle.Unregister(item.WaitObject); item.WaitObject.Close(); this._stateObjects.Remove(item); } }
private void Register(NativeMethods.RASCN changeType, RasHandle handle) { AutoResetEvent waitObject = new AutoResetEvent(false); int ret = SafeNativeMethods.Instance.RegisterConnectionNotification(handle, waitObject.SafeWaitHandle, changeType); if (ret == NativeMethods.SUCCESS) { RasConnectionWatcherStateObject stateObject = new RasConnectionWatcherStateObject(changeType); stateObject.WaitObject = waitObject; stateObject.WaitHandle = ThreadPool.RegisterWaitForSingleObject(waitObject, new WaitOrTimerCallback(this.ConnectionStateChanged), stateObject, Timeout.Infinite, false); this._stateObjects.Add(stateObject); } }