私は WPF Windows アプリケーションの進行状況バーに取り組んでいます。私の問題は、Microsoft Access データベース形式のデータがあり、そのデータをデータベースにコピーしたいのですが、コピーはボタンをクリックした後にのみ行われます。データがデータベースにコピーされている間、プログレス バーは取得する必要があります有効にします。
2 に答える
よくわかりませんが、BackgroundWorkerがあなたが探しているものだと思いますここにリンク BackGroundWorkerがあります
プログレス バーを使用するには、UI スレッドとは別の新しいスレッドを作成する必要があります。バックグラウンド ワーカーは、おそらくこれを行うための最良の方法です。
private BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
Worker.ProgressChanged += new ProgressChangedEventHandler(Worker_ProgressChanged);
worker_DoWork イベントの内部は、やりたいことを配置する場所です。この場合、データをコピーします。これは、進行状況バー コントロールを表示するように設定したイベントでもあります (デフォルトでは表示されません)。プログレスバーの値を更新するには、次のことを行う必要があります
worker.ReportProgress(int amountDone)
Valeがあなたの投稿にコメントしたように、完了したジョブのパーセンテージ/量を取得する具体的な方法を考え出すのはあなた次第です。この場合、行数がそれを行う最良の方法かもしれません:NumberOfRowsCopied /TotalNumberOfRows * 100 = 完了率?
バックグラウンド ワーカーを開始するには、ボタンでイベント/コマンドをクリックします。
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
進捗状況を把握する自信がない場合は、代わりにマーキス コントロールを使用してください。これにより、プログラムがクラッシュしておらず、まだ機能していることをユーザーに示すことができます。