0

アプリケーションが動作しているか、何かを処理しているかどうかを知るにはどうすればよいですか? 巨大なデータをファイルに書き込もうとしているとしましょう。その間、アプリケーションは応答しません。現在の申請状況を知りたい。

4

1 に答える 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 に答える