5

重複の可能性:
C# WinForm アプリケーション - 実行時間の長い操作中に UI がハングする

C# Windows フォームでプログレス バーのサンプル アプリケーションを作成しました。

アプリケーションは正常に動作しますが、アプリケーションの位置を移動または最小化しようとすると、プロセスが準拠しないまで「ハング」します。

助けてください: アプリケーションが「ハング」しないようにするにはどうすればよいですか?

これは私のアプリケーションコードです:

public partial class ProgressBar : Form
{
    public ProgressBar()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int value;
        for (value = 0; value != 10000000; value++)
            progressBar1.Value = progressBar1.Value + 1;

        MessageBox.Show("ProgressBar Full", "Done", 
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
    }

    private void ProgressBar_Load(object sender, EventArgs e)
    {
        progressBar1.Maximum = 10000000;
    }
}
4

2 に答える 2

4

「ハング」する理由は、プロセスが同じスレッドで実行されているためです。BackgroundWorker を使用して、進行状況バーのプロセスを別のスレッドに移動します。

コピーと貼り付けを防ぐには、次のリンクを参照してください。

于 2012-08-04T12:24:46.480 に答える
2

これを防ぐ唯一の方法は、ワークロードを別のスレッドに委任することです。

そのために使用できるクラスがいくつかあります。

バックグラウンド ワーカーは、結果を UI スレッドに返す手段を提供するため、最も単純な方法かもしれません。他のオプションでは、結果を正しいスレッドに送信する必要があります。

于 2012-08-04T13:20:43.370 に答える