Example #1
0
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                var worker = _worker;
                if (worker != null)
                {
                    Log("Sending abort... {0}", DateTime.Now);
                    lock (_workerQueue) {
                        _workerQueue.Clear();
                        _workerQueue.Enqueue(WorkerMessage.Abort());
                        _workerQueueChanged.Set();
                    }
                    Log("Waiting for abort... {0}", DateTime.Now);
                    bool stopped = worker.Join(10000);
                    Log("Done Waiting for abort... {0} {1}", DateTime.Now, stopped);
                    Debug.Assert(stopped, "Failed to terminate TaskProvider worker thread");
                }

                lock (_itemsLock) {
                    _items.Clear();
                }
                if (_taskList != null)
                {
                    _taskList.UnregisterTaskProvider(_cookie);
                }

                _workerQueueChanged.Dispose();
            }
        }
Example #2
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                var worker = _worker;
                if (worker != null)
                {
                    lock (_workerQueue) {
                        _workerQueue.Clear();
                        _workerQueue.Enqueue(WorkerMessage.Abort());
                        _workerQueueChanged.Set();
                    }
                    bool stopped = worker.Join(10000);
                    Debug.Assert(stopped, "Failed to terminate TaskProvider worker thread");
                }

                lock (_itemsLock) {
                    _items.Clear();
                }
                if (_taskList != null)
                {
                    _taskList.UnregisterTaskProvider(_cookie);
                }

                _workerQueueChanged.Dispose();
            }
        }
Example #3
0
        private void RemoveProvider_Click(object sender, RoutedEventArgs e)
        {
            if ((_service != null) && (_providerCookie != VSConstants.VSCOOKIE_NIL))
            {
                _provider.ClearItems();
                _service.RefreshTasks(_providerCookie);
                int hr = _service.UnregisterTaskProvider(_providerCookie);

                if (ErrorHandler.Succeeded(hr))
                {
                    _providerCookie = VSConstants.VSCOOKIE_NIL;
                    _provider       = null;
                    _service        = null;

                    this.RemoveProvider.Foreground = Brushes.Green;
                    this.CreateProvider.IsEnabled  = true;
                    this.Refresh.IsEnabled         = false;
                    this.Add1000.IsEnabled         = false;
                    this.RemoveHalf.IsEnabled      = false;
                    this.RemoveProvider.IsEnabled  = false;
                    this.RemoveProvider.IsEnabled  = false;

                    return;
                }
            }

            this.RemoveProvider.Foreground = Brushes.Red;
        }
Example #4
0
 public void Dispose()
 {
     lock (_workerQueue) {
         try {
             if (_hasWorker)
             {
                 _hasWorker = false;
                 _workerQueue.CompleteAdding();
             }
             else
             {
                 _workerQueue.Dispose();
             }
         } catch (ObjectDisposedException) {
             // _workerQueue is already disposed
         }
     }
     lock (_itemsLock) {
         _items.Clear();
     }
     RefreshAsync().DoNotWait();
     if (_errorList != null)
     {
         _errorList.UnregisterTaskProvider(_cookie);
     }
 }
Example #5
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         lock (_workerQueue) {
             if (_hasWorker)
             {
                 _hasWorker = false;
                 _workerQueue.CompleteAdding();
             }
             else
             {
                 _workerQueue.Dispose();
             }
         }
         lock (_itemsLock) {
             _items.Clear();
         }
         RefreshAsync().DoNotWait();
         if (_taskList != null)
         {
             _taskList.UnregisterTaskProvider(_cookie);
         }
     }
 }
Example #6
0
        public int OnTaskListFinalRelease(IVsTaskList pTaskList)
        {
            if ((_cookie != 0) && (null != pTaskList))
            {
                int hr = pTaskList.UnregisterTaskProvider(_cookie);
                Debug.Assert(hr == VSConstants.S_OK, "UnregisterTaskProvider did not return S_OK.");
            }

            return(VSConstants.S_OK);
        }
Example #7
0
        int IVsTaskProvider.OnTaskListFinalRelease(IVsTaskList pTaskList)
        {
            if (pTaskList != null && cookie != 0)
            {
                pTaskList.UnregisterTaskProvider(cookie);
                cookie = 0;
                return(VSConstants.S_OK);
            }

            return(VSConstants.S_FALSE);
        }
Example #8
0
 private void RegisterProvider()
 {
     if (taskList != null)
     {
         if (dwCookie != 0)
         {
             taskList.UnregisterTaskProvider(dwCookie);
             dwCookie = 0;
         }
         taskList.RegisterTaskProvider(this, out dwCookie);
     }
 }
Example #9
0
 public int OnTaskListFinalRelease(IVsTaskList pTaskList)
 {
     if (pTaskList != null)
     {
         if (taskListCookie != 0)
         {
             pTaskList.UnregisterTaskProvider(taskListCookie);
             taskListCookie = 0;
             taskList       = null;
         }
     }
     return(0);
 }
Example #10
0
        public virtual void Dispose()
        {
            try {
                // Disposing the main wait object will terminate the thread
                // as best as we can
                _workerQueueChanged.Dispose();
            } catch (ObjectDisposedException) {
            }

            lock (_itemsLock) {
                _items.Clear();
            }
            if (_taskList != null)
            {
                _taskList.UnregisterTaskProvider(_cookie);
            }
        }
Example #11
0
 public void Dispose()
 {
     lock (_workerQueue) {
         if (_hasWorker)
         {
             _hasWorker = false;
             _workerQueue.CompleteAdding();
         }
         else
         {
             _workerQueue.Dispose();
         }
     }
     lock (_itemsLock) {
         _items.Clear();
     }
     RefreshAsync().DoNotWait();
     if (_errorList != null)
     {
         _errorList.UnregisterTaskProvider(_cookie);
     }
 }
Example #12
0
 public int OnTaskListFinalRelease(IVsTaskList pTaskList)
 {
     if (pTaskList != null)
     {
         if (taskListCookie != 0)
         {
             pTaskList.UnregisterTaskProvider(taskListCookie);
             taskListCookie = 0;
             taskList = null;
         }
     }
     return 0;
 }
Example #13
0
        public int OnTaskListFinalRelease(IVsTaskList pTaskList)
        {
            if ((_cookie != 0) && (null != pTaskList))
            {
                int hr = pTaskList.UnregisterTaskProvider(_cookie);
                Debug.Assert(hr == VSConstants.S_OK, "UnregisterTaskProvider did not return S_OK.");
            }

            return VSConstants.S_OK;
        }