0

クラスを呼び出してバックグラウンドワーカーを開始するボタンがあります。バックグラウンドワーカーの進行状況を変更して更新するUI(ボタンがあります)に進行状況を報告することを除いて、すべてが正常に機能します。私はたくさんのことを試みましたが、成功しませんでした。変更された進行状況は、単に発火するだけではありません。

バックグラウンドワーカーを開始するためのコードは次のとおりです。

var backgroundWorker = new BackgroundWorker();
            ListBackgroundWorkerRunning.Add(path, backgroundWorker);
            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork += (sender, e) =>
                {
                    _fileUploadRepository.UploadFiles(path);
                    var directoryConfiguration = new DirectoryConfiguration();
                    directoryConfiguration.UpdateProgressBarHandler(10);
                    //BackgroundWorker worker = sender as BackgroundWorker;

                    //directoryConfiguration.ProgressChanged += directoryConfiguration_ProgressChanged;
                };
            //backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
            backgroundWorker.RunWorkerCompleted += (sender, e) =>
                {
                    _crudOperation.UpdateDatabaseWithCrawlFinishedNotification(path);
                    RemoveCrawler(path);
                    InitializeWatcher(path);
                };
            backgroundWorker.RunWorkerAsync();

これがprogress_changedイベントです:

//void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        //{
        //    var directoryConfiguration = new DirectoryConfiguration();
        //    directoryConfiguration.Invoke(new Action(() => directoryConfiguration.progressBar1.Value = e.ProgressPercentage));
        //}
4

1 に答える 1

0

あなたはまだ電話する必要があります

backgroundWorker.ReportProgress(currentProgress);

進行状況イベントをトリガーするために、DoWorkハンドラーから時々送信されます。

http://msdn.microsoft.com/en-us/library/ka89zff4.aspx

また、ProgressChangedハンドラーで再度コメントする必要があります:-)

于 2013-02-23T06:42:48.833 に答える