private void fetchMetaDataWorker_DoWork( object sender, DoWorkEventArgs e )
        {
            try
            {
                if ( this._item.Mediainfo != null )
                {
                    return;
                }

                var mw = new MediaInfoWorker();
                mw.scan_file_one_time( this._item );
            }
            catch ( Exception ex )
            {
                Factory.Instance.LogLines.Enqueue( ex.Message );
                Factory.Instance.LogLines.Enqueue( ex.StackTrace );
            }
        }
        private void CheckAllFilesButton_Click( object sender, RoutedEventArgs e )
        {
            try
            {
                var fmi = new MediaInfoWorker();
                fmi.start_scan();
                Factory.Instance.Working.Add( fmi );

                var ffmpeg = new FfmpegCorruptWorker();
                ffmpeg.start_scan();
                Factory.Instance.Working.Add( ffmpeg );
            }
            catch ( Exception ex )
            {
                Factory.Instance.LogLines.Enqueue( ex.Message );
                Factory.Instance.LogLines.Enqueue( ex.StackTrace );
            }
        }
        private void check_files_corruption()
        {
            try
            {
                if ( this.SeriesTreeView.SelectedItem == null )
                {
                    return;
                }

                var directory = this.SeriesTreeView.SelectedItem as IDirectoryItem;
                var file = this.SeriesTreeView.SelectedItem as IFileItem;

                if ( directory != null )
                {
                    var dmi = new MediaInfoWorker( directory );
                    dmi.start_scan();

                    var ffmpeg = new FfmpegCorruptWorker( directory );
                    ffmpeg.start_scan();
                }

                if ( file == null )
                {
                    return;
                }

                var fmi = new MediaInfoWorker( file );
                fmi.start_scan();

                var ffmpegfile = new FfmpegCorruptWorker( file );
                ffmpegfile.start_scan();
            }
            catch ( Exception ex )
            {
                Factory.Instance.LogLines.Enqueue( ex.Message );
                Factory.Instance.LogLines.Enqueue( ex.StackTrace );
            }
        }
        private void SeriesTreeView_SelectedItemChanged( object sender, RoutedPropertyChangedEventArgs< object > e )
        {
            try
            {
                if ( this.SeriesTreeView.SelectedItem == null )
                {
                    return;
                }

                var directory = this.SeriesTreeView.SelectedItem as IDirectoryItem;
                var file = this.SeriesTreeView.SelectedItem as IFileItem;

                if ( directory != null )
                {
                    var fname = Factory.Instance.ItemProvider.get_series_name_from_folder( directory );
                    var series = Factory.Instance.Tvdb?.get_series_by_name( fname );

                    if ( series != null )
                    {
                        this.TvdbTab.Content = new UserControlSeriesViewer( series );
                    }
                    else
                    {
                        this.TvdbTab.Content = new UserControlTvdbMissing();
                    }
                }

                if ( file == null )
                {
                    return;
                }

                var name = Factory.Instance.ItemProvider.get_series_name_from_file( file );

                if ( name != null )
                {
                    var series = Factory.Instance.Tvdb?.get_series_by_name( name );
                    if ( series != null )
                    {
                        this.TvdbTab.Content = new UserControlSeriesViewer( series );
                    }
                    else
                    {
                        this.TvdbTab.Content = new UserControlTvdbMissing();
                    }
                }
                else
                {
                    this.TvdbTab.Content = new UserControlTvdbMissing();
                }

                if ( file.Missing )
                {
                    this.MediaTab.Content = new UserControlTvdbMissing();
                    return;
                }

                var mw = new MediaInfoWorker();
                mw.scan_file_one_time( file );

                if ( file.Mediainfo == null )
                {
                    this.MediaTab.Content = new UserControlTvdbMissing();
                    return;
                }

                this._item = file;

                var fetchMetaDataWorker = new BackgroundWorker();
                fetchMetaDataWorker.DoWork += this.fetchMetaDataWorker_DoWork;
                fetchMetaDataWorker.RunWorkerCompleted += this.fetchMetaDataWorker_RunWorkerCompleted;
                fetchMetaDataWorker.RunWorkerAsync();
            }
            catch ( Exception ex )
            {
                Factory.Instance.LogLines.Enqueue( ex.Message );
                Factory.Instance.LogLines.Enqueue( ex.StackTrace );
            }
        }