-3

私は WPF Windows アプリケーションの進行状況バーに取り組んでいます。私の問題は、Microsoft Access データベース形式のデータがあり、そのデータをデータベースにコピーしたいのですが、コピーはボタンをクリックした後にのみ行われます。データがデータベースにコピーされている間、プログレス バーは取得する必要があります有効にします。

4

2 に答える 2

0

よくわかりませんが、BackgroundWorkerがあなたが探しているものだと思いますここにリンク BackGroundWorkerがあります

于 2012-07-31T10:38:12.050 に答える
0

プログレス バーを使用するには、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();
}

進捗状況を把握する自信がない場合は、代わりにマーキス コントロールを使用してください。これにより、プログラムがクラッシュしておらず、まだ機能していることをユーザーに示すことができます。

于 2012-07-31T12:52:26.987 に答える