示例#1
0
        public virtual void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;

            //GC.SuppressFinalize(this);

            if (DeferTimer != null)
            {
                DeferTimer.Stop();
                DeferTimer = null;
            }

            Processed  = 0;
            Processing = false;

            Queue.Free(true);
            Queue = null;

            Handler  = null;
            Mutator  = null;
            Callback = null;
        }
示例#2
0
        private void InternalDeferredCallback()
        {
            if (DeferTimer != null)
            {
                DeferTimer.Stop();
                DeferTimer = null;
            }

            Process();
        }
示例#3
0
        public virtual void Process()
        {
            if (IsDisposed /* || Processing*/)
            {
                return;
            }

            if (Queue.Count == 0)
            {
                OnProcessed();
                return;
            }

            Processing = true;

            TEffectInfo info = Dequeue();

            if (!OnProcess(info))
            {
                ++Processed;
                Process();
                return;
            }

            ++Processed;

            if (Deferred)
            {
                DeferTimer = Timer.DelayCall(
                    GetDeferDelay(info),
                    () =>
                {
                    if (DeferTimer != null)
                    {
                        DeferTimer.Stop();
                        DeferTimer = null;
                    }

                    Process();
                });
            }
            else
            {
                Process();
            }
        }
示例#4
0
 public MainWindowViewModel
 (
     [NotNull] IYouTubeCleanupToolDbContextFactory youTubeCleanupToolDbContextFactory,
     [NotNull] IMapper mapper,
     [NotNull] IGetAndCacheYouTubeData getAndCacheYouTubeData,
     [NotNull] IUpdateDataViewModel updateDataViewModel,
     [NotNull] IWindowService windowService,
     [NotNull] IErrorHandler errorHandler,
     [NotNull] IDoWorkOnUi doWorkOnUi,
     [NotNull] IDebugSettings debugSettings,
     [NotNull] ILogger logger
 )
 {
     _youTubeCleanupToolDbContextFactory = youTubeCleanupToolDbContextFactory;
     Videos                  = new ObservableCollection <WpfVideoData>();
     Playlists               = new ObservableCollection <WpfPlaylistData>();
     VideoFilter             = new ObservableCollection <VideoFilter>();
     _mapper                 = mapper;
     _getAndCacheYouTubeData = getAndCacheYouTubeData;
     CheckedOrUncheckedVideoInPlaylistCommand = new RunMethodCommand <WpfPlaylistData>(async o => await UpdateVideoInPlaylist(o), errorHandler.HandleError);
     OpenPlaylistCommand                       = new RunMethodCommand <PlaylistData>(OpenPlaylist, errorHandler.HandleError);
     OpenChannelCommand                        = new RunMethodCommand <VideoData>(OpenChannel, errorHandler.HandleError);
     OpenVideoCommand                          = new RunMethodCommand <VideoData>(OpenVideo, errorHandler.HandleError);
     SearchCommand                             = new RunMethodWithoutParameterCommand(Search, errorHandler.HandleError);
     RefreshDataCommand                        = new RunMethodWithoutParameterCommand(UpdateAllPlaylists, errorHandler.HandleError);
     UpdateSettingsCommand                     = new RunMethodWithoutParameterCommand(UpdateSettings, errorHandler.HandleError);
     RefreshSelectedPlaylistCommand            = new RunMethodWithoutParameterCommand(UpdateSelectedPlaylist, errorHandler.HandleError);
     ShowLogsCommand                           = new RunMethodWithoutParameterCommand(ShowLogsWindow, errorHandler.HandleError);
     _searchTypeDelayDeferTimer                = new DeferTimer(async() => await SearchForVideos(SearchText), errorHandler.HandleError);
     _selectedFilterDataFromComboBoxDeferTimer = new DeferTimer(async() => await GetVideosForPlaylist(SelectedFilterFromComboBox), errorHandler.HandleError);
     _selectedVideoChangedDeferTimer           = new DeferTimer(async() => await SelectedVideoChanged(SelectedVideo), errorHandler.HandleError);
     _updateDataViewModel                      = updateDataViewModel;
     _windowService                            = windowService;
     _doWorkOnUi    = doWorkOnUi;
     _debugSettings = debugSettings;
     _logger        = logger;
     _debugSettings.ShowIdsChanged += DebugSettingsOnShowIdsChanged;
     SpecialVideoFilters            = new List <VideoFilter>()
     {
         new() { Title = "All", FilterType = FilterType.All },
         new() { Title = "Uncategorized", FilterType = FilterType.Uncategorized },
     };
 }