/// <summary>
 /// Clean up the resources.
 /// </summary>
 public void Dispose()
 {
     this._settingsManager     = null;
     this._wuCollectionWrapper = null;
     this._uSession            = null;
     _eventSource.Message("Windows Update Manager disposed.");
 }
        private WUCollectionWrapper GetWUCollection(UpdateCollection searchUpdates)
        {
            WUCollectionWrapper collectionWrapper = new WUCollectionWrapper();

            foreach (IUpdate2 update in searchUpdates)
            {
                if (UpdateIsInCategory(update))
                {
                    collectionWrapper.Add(update);
                }
            }
            return(collectionWrapper);
        }
        private OperationResultCode SearchUpdates(CancellationToken cancellationToken)
        {
            _eventSource.InfoMessage("Search Started.");
            if (cancellationToken.IsCancellationRequested)
            {
                _eventSource.InfoMessage("Search Aborted.");
                return(OperationResultCode.orcAborted);
            }

            ISearchResult searchResult = null;
            long          retries      = 0;

            while (!cancellationToken.IsCancellationRequested)
            {
                searchResult = SearchUpdatesUtil(cancellationToken);

                if ((searchResult != null && searchResult.ResultCode == OperationResultCode.orcSucceeded) || retries >= this._serviceSettings.WUOperationRetryCount || cancellationToken.IsCancellationRequested)
                {
                    break;
                }

                TimeSpan delayBetweenRetries = TimeSpan.FromMinutes(this._serviceSettings.WUDelayBetweenRetriesInMinutes);
                this._helper.WaitOnTask(Task.Delay(delayBetweenRetries), cancellationToken);
                retries++;
            }

            if (searchResult != null)
            {
                this._wuCollectionWrapper = this.GetWUCollection(searchResult.Updates);
                _eventSource.Message("Search finished with result : {0}. Total searched results : {1}", searchResult.ResultCode, this._wuCollectionWrapper.Collection.Count);
                return(searchResult.ResultCode);
            }
            else
            {
                this._wuCollectionWrapper = null;
                _eventSource.Message("No Search Result!");
                return(OperationResultCode.orcFailed);
            }
        }
 /// <summary>
 /// Reset Windows Update Manager.
 /// </summary>
 public void ResetManager()
 {
     this._serviceSettings     = _settingsManager.GetSettings();
     this._wuCollectionWrapper = null;
     _eventSource.Message("Resetting windows update manager.");
 }