1つのデータベースから別のデータベースにデータをインポートおよび変換するための小さなツールを作成しました。これには多くの時間がかかりますので、不確定のプログレスバーを使ってユーザーに何らかの進捗状況を表示したかったのです。 インポートが実行されている間は、プログレスバーも実行している必要があります。 私はこのサイトを参照のために使用しました:The ProgressBar controlしかし、不確定のプログレスバーのオプションは一度設定されているので、DoWork-Methodの役割を理解するのが難しくなりました。WPFでバックグラウンドワーカーとIndeterminateプログレスバーを使用
インポートが完了した後でアニメーションを途中で止めることはできません。 誰かが私を助けてくれますか?
XAML:
<ProgressBar Minimum="{Binding Path=Minimum}" Maximum="100" IsIndeterminate="{Binding Path=IsIndeterminate}" Height="20" Grid.Column="2" Grid.Row="5" Grid.ColumnSpan="2"/>
のViewModel:ここ
public void StartImportThread()
{
ButtonsEnabled = false;
var th = new Thread(new ThreadStart(StartImport));
th.IsBackground = true;
th.Start();
}
public void StartImport()
{
_threadDispatcher = Dispatcher.CurrentDispatcher;
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_Complete;
worker.RunWorkerAsync();
// Doing Import Stuff
worker.CancelAsync(); // Import finished
ButtonsEnabled=true;
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
// while(true)
// {
Minimum = 0;
IsIndeterminate = true;
// }
}
private void worker_Complete(object sender, RunWorkerCompletedEventArgs e)
{
// if (e.Cancelled)
// {
IsIndeterminate = false;
Minimum = 100;
// }
}
*不定*意味ではなく、*のですか? –
@JimMischel彼は実際に私が不確定であるように見えます。これは、実際にどれくらいの時間がかかるかを実際には把握しておらず、単に進捗が実際に行われていることを示す進捗インジケータを指します。 – Servy
これは私が言ったことです、それはインポートがまだ実行中であることを表示するための指標です。私も私の質問に編集を加えました。それを指摘してくれてありがとう。 – Scorch