C 解決介面不響應

2021-09-07 06:03:11 字數 1255 閱讀 9640

在我們的程式中,經常會有一些耗時較長的運算,為了保證使用者體驗,不引起介面不響應,我們一般會採用多執行緒操作,讓耗時操作在後台完成,完成後再進行處理或給出提示,在執行中,也會時時去重新整理介面上的進度條等顯示,必要時還要控制後台執行緒中斷當前操作。

實際應用:

可以選擇乙個很大的資料夾,統計的時候可以進行移動窗體等操作。

使用這個元件其實非常簡單,例如,我們做乙個類似如下介面的進度條的小例子,在後台執行緒中進行耗時運算,同時重新整理介面上的進度條。

過程如下:

1.新建乙個windows窗體應用程式,如:backgroundworkerprogressbardemo

2.拖乙個progressbar(progressbar1)和乙個backgroundworker (backgroundworker1)到form上。

3.把下面的**copy過去就ok了,**注釋的很詳細,可以按照需要修改。

namespace

backgroundworkerprogressbardemo

void form1_shown(object

sender, eventargs e)

//on worker thread so do our thing!

void backgroundworker1_dowork(object

sender, doworkeventargs e)

}//back on the 'ui' thread so we can update the progress bar

void backgroundworker1_progresschanged(object

sender, progresschangedeventargs e)

}}

若要為後台操作做好準備,請新增dowork事件的事件處理程式,在此事件處理程式中呼叫耗時的操作。

若要開始此操作,請呼叫runworkerasync。

若要收到進度更新的通知,請處理progresschanged 事件。

若要在操作完成時收到通知,請處理runworkercompleted 事件。

注意:您必須非常小心,確保在 dowork 事件處理程式中不操作任何使用者介面物件。 而應該通過 progresschanged 和 runworkercompleted 事件與使用者介面進行通訊。

如果後台操作需要引數,請在呼叫 runworkerasync 時給出引數。 在 dowork 事件處理程式內部,可以從 doworkeventargs.argument 屬性中提取該引數。

vue資料不響應

一 在開發有時會遇到乙個問題,明明寫的沒問題,為啥資料就不響應呢處?template div div span 使用者名稱 span span 使用者性別 span span v if userinfo.officialaccount span div button click handleaddo...

vue 資料不響應的問題排除 解決

資料不響應,可能是用法有問題使用者名稱 使用者性別 if userinfo.officialaccount export default methods 1.將本來要新增的屬性提前在data中定義好data 2.直接替換掉userinfothis.userinfo 3.使用vue.setimport...

MFC ribbon控制項訊息不響應

今天在做ribbon的時候發現新增了乙個按鈕,響應函式寫完以後卻沒辦法觸發。我新增的按鈕id是id btn about,查了一下解決方案如下 1.檢視resource.件,確保自動生成的id不重複,如下,事實證明自動生成的重複了,自動生成的是32858,然後我手動修改為32860 define id...