コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        /// <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);
                    }
                }
            }
        }
コード例 #4
0
ファイル: RasConnectionWatcher.cs プロジェクト: kangwl/xk
        /// <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);
            }
        }
コード例 #5
0
ファイル: RasConnectionWatcher.cs プロジェクト: kangwl/xk
        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);
            }
        }