はじめに:時間がかかり、非常に長い場合は、Use Winフォームのコードがトリガーイベントの後に実行され、それは仮死ウィンドウインターフェイスになります!私は最近、Winフォームフォームの実装により:バッチ更新タスクは、データの量からデータベースの数の必要な運転データは、時間がかかり、ゆっくりとしか、ゆっくりと実行更新、百万レベルに到達するとき。
しかし、素晴らしい経験の問題の実行中に:デバッグモードでのフォーム、コードが周期的にゆっくり実行することができ、異常な表示されませんでした。私は一人でEXEプログラムを実行するときしかし、彼は今ます:プログラムの状態が応答しない、アニメーションを停止しました。
背景Baiduは直接答えを見つけるだけでなく、見つかりませんでしたが、その理由を:非常に時間のかかる操作は、プログラムがアニメーションを中断されるとき、解決策は単純であるため、非同期処理で、プログラムをさせてください、あなたの時間のかかる方法ではあなたは結果を待っています。
次のコード:
方法への迅速な終わりのための非同期Task.Runの方法により、更新プロセスの段階の操作の途中には、時間がかかるが、この変換の採択後、インターフェースはもはや完璧なソリューションを立ち往生されていないされていません。
/// <まとめ> /// 仮方法-ユーザの住所、電話番号データを磨くために使用 /// </要約> /// <PARAM NAME = "SENDER"> </ PARAM> /// <PARAM NAME = " E "> </ PARAM> プライベート ボイド btnUpdateUserAddressPhone_Click(オブジェクト送信者のEventArgs E) { この .txtActionInfomation.Text $ = " 方法が開始" ; この.txtActionInfomation.Update(); Task.Run(() =>{ // コードを消費して 行う { // 私の更新コード、データベース・ページを取得して更新する必要があり、時間がかかり //... // ... この .txtActionInfomation.Text $ = " データのX-作品が更新された" ; この.txtActionInfomation.Update(); } ながら、(真の); }); この .txtActionInfomation.Text $ = " endメソッド" ; この.txtActionInfomation.Update(); }