winform批量更新數據_長時間的執行會導致界面卡死


  前言:使用winform觸發一個事件后執行的代碼,如果耗時非常長,則會導致窗口界面假死!  本人最近通過winform窗體執行一項:需要批量更新一批數據庫的數據的操作的任務時,由於數據量達到百萬級別,非常耗時,只能慢慢更新,慢慢執行。   

但是,在執行的過程遇到了一個奇葩的問題:窗體在調試狀態下,代碼可以慢慢循環執行,沒出現異常。  但是我單獨運行EXE程序時,就必現:程序假死,未響應狀態。  

后台百度雖然沒有找到直接的答案,但是也發現了原因:是因為在操作非常耗時時,程序會出現假死,解決方法也很簡單:在你的耗時方法里,加上異步處理,不要讓程序一直等待你的執行結果。

 

如下代碼:

通過,異步Task.Run方法,讓方法快速結束,不用登台中間即為耗時的操作更新過程,通過這樣改造后,界面再也不卡死了,完美解決。

/// <summary>
        /// 臨時方法-用於刷用戶地址手機號數據
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdateUserAddressPhone_Click(object sender, EventArgs e)
        {
            this.txtActionInfomation.Text = $"方法開始";
            this.txtActionInfomation.Update();
            Task.Run(() => {
                //耗時代碼
                do
                {
                    //我的更新代碼,需要分頁獲取並更新數據庫,耗時長
                    //...
                    //...
                    this.txtActionInfomation.Text = $"已更新X條數據";
                    this.txtActionInfomation.Update();

                } while (true);
            });
            this.txtActionInfomation.Text = $"方法結束";
            this.txtActionInfomation.Update();

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM