アプリケーションが動作しているか、何かを処理しているかどうかを知るにはどうすればよいですか? 巨大なデータをファイルに書き込もうとしているとしましょう。その間、アプリケーションは応答しません。現在の申請状況を知りたい。
user1567051
質問する
89 次
1 に答える
5
バックグラウンド スレッドで大量のデータを処理するには、 BackgroundWorkerコンポーネントを使用します。ProgressChangedイベントを介して進行状況をユーザーに通知します。
サンプル:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
}
private void WriteDataButton_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= numberOfIterations; i++)
{
// write part of data
backgroundWorker1.ReportProgress(i * 100 / numberOfIterations);
}
}
// This event handler updates the progress.
private void backgroundWorker1_ProgressChanged(
object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
// This event handler deals with the results of the background operation.
private void backgroundWorker1_RunWorkerCompleted(
object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Huge data was written");
}
}
于 2012-10-20T19:13:53.427 に答える