WinForms アプリで実行する処理負荷の高いタスクがいくつかあります。問題は、実行中に UI (UI メインスレッド) がフリーズすることです。
私はまだ C# でスレッドとデリゲートをあまり扱っていません。そのため、ユーザーがアプリがクラッシュしていると思わないように、UI をフリーズせずにこれらのプロセスの重いタスクを処理する方法を誰かが助けてくれることを願っています。待ちながら?
例えば。を介して電話がありますが、FrontController
時間がかかります:
_controller.testExportExcel(wrapper, saveDialog.FileName);
Excelファイルを作成しているためです。アプリが動作している間、UI で応答することはありません。
プロセス負荷の高いタスクの別の例は次のとおりです。
private void dataGridView_liste_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
if (e.ListChangedType != ListChangedType.ItemDeleted)
{
foreach (DataGridViewRow r in dataGridView_liste.Rows)
{
DataGridViewCellStyle red = dataGridView_liste.DefaultCellStyle.Clone();
red.BackColor = Color.LightGreen;
if (r.Cells["News"].Value != null && (bool)r.Cells["News"].Value == true)
r.DefaultCellStyle = red;
}
}
}
foreach
ループに時間がかかる場所で、UI をフリーズします。プロセスを実行し、完了すると自動的に閉じる非同期スレッドが役立つと思います。しかし、それはどのように機能しますか??