Winフォーム一括更新データは_長い死んインタフェースカードの実装につながります

オリジナル: Winフォーム一括更新データは_長い死んインタフェースカードの実装につながります

  はじめに:時間がかかり、非常に長い場合は、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(); 

        }

 

おすすめ

転載: www.cnblogs.com/lonelyxmas/p/11100204.html