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

  前言:使用winform觸發一個事件後執行的代碼,若是耗時很是長,則會致使窗口界面假死!  本人最近經過winform窗體執行一項:須要批量更新一批數據庫的數據的操做的任務時,因爲數據量達到百萬級別,很是耗時,只能慢慢更新,慢慢執行。   數據庫

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

後臺百度雖然沒有找到直接的答案,可是也發現了緣由:是由於在操做很是耗時時,程序會出現假死,解決方法也很簡單:在你的耗時方法裏,加上異步處理,不要讓程序一直等待你的執行結果。this

 

以下代碼:spa

經過,異步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();

        }
相關文章
相關標籤/搜索