コード例 #1
0
        public void Clear()
        {
            CurrentVideo?.Dispose();
            CurrentVideo = null;
            OnPropertyChanged(nameof(CurrentVideo));

            NextVideo?.Dispose();
            NextVideo = null;
            OnPropertyChanged(nameof(NextVideo));


            if (Videos != null)
            {
                foreach (var item in Videos)
                {
                    item.Dispose();
                }
                Videos.Clear();
                OnPropertyChanged(nameof(Videos));
            }

            _IsInitialized = false;
        }
コード例 #2
0
        public async Task InitializeRelatedVideos(INicoVideoDetails currentVideo)
        {
            NowLoading = true;
            OnPropertyChanged(nameof(NowLoading));
            try
            {
                using (var releaser = await _InitializeLock.LockAsync())
                {
                    if (_IsInitialized)
                    {
                        return;
                    }
                    _IsInitialized = true;

                    var result = await _relatedVideoContentsAggregator.GetRelatedContentsAsync(currentVideo);

                    CurrentVideo?.Dispose();
                    CurrentVideo = new VideoListItemControlViewModel(currentVideo);
                    OnPropertyChanged(nameof(CurrentVideo));

                    Videos = result.OtherVideos;
                    OnPropertyChanged(nameof(Videos));

                    if (currentVideo.Series?.Video.Next is not null and NvapiVideoItem nextSeriesVideo)
                    {
                        NextVideo?.Dispose();
                        NextVideo = new VideoListItemControlViewModel(nextSeriesVideo);
                        OnPropertyChanged(nameof(NextVideo));
                    }
                }
            }
            finally
            {
                NowLoading = false;
                OnPropertyChanged(nameof(NowLoading));
            }
        }
コード例 #3
0
 public override void Dispose()
 {
     CurrentVideo?.Dispose();
     NextVideo?.Dispose();
     base.Dispose();
 }