第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BackgroundWorker與后臺線程

BackgroundWorker與后臺線程

揚帆大魚 2019-07-29 10:12:59
BackgroundWorker與后臺線程我有一個關(guān)于我應(yīng)該在Windows窗體應(yīng)用程序上使用的后臺線程實現(xiàn)的選擇的風(fēng)格問題。目前我BackgroundWorker在一個具有無限(while(true))循環(huán)的表單上。在這個循環(huán)中,我WaitHandle.WaitAny用來保持線程打盹直到感興趣的事情發(fā)生。我等待的一個事件句柄是一個“ StopThread”事件,這樣我就可以擺脫循環(huán)。來自我被覆蓋的事件會發(fā)出此事件的信號Form.Dispose()。我讀到的某個地方BackgroundWorker真的是用于那些你不想將UI綁定到并且具有有限結(jié)束的操作 - 比如下載文件或處理一系列項目。在這種情況下,“結(jié)束”是未知的,并且僅在窗口關(guān)閉時。因此,使用后臺線程而不是BackgroundWorker為此目的更合適嗎?
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

根據(jù)我對您的問題的理解,您使用的BackgroundWorker是標(biāo)準線程。

為什么原因BackgroundWorker建議的事情,你不想占用UI線程是因為它做贏形式的發(fā)展時,暴露了一些不錯的活動。

事件喜歡RunWorkerCompleted在線程完成它需要做的事情時發(fā)出信號,以及ProgressChanged在線程進度上更新GUI 的事件。

因此,如果您沒有使用這些,我認為使用標(biāo)準線程不會對您需要做什么造成任何傷害。


查看完整回答
反對 回復(fù) 2019-07-29
?
紫衣仙女

TA貢獻1839條經(jīng)驗 獲得超15個贊

幾乎是馬特戴維斯所說的,還有以下幾點:

對我來說,主要區(qū)別BackgroundWorker在于通過自動編組已完成的事件SynchronizationContext。在UI上下文中,這意味著已完成的事件在UI線程上觸發(fā),因此可用于更新UI。如果您BackgroundWorker在UI上下文中使用,這是一個主要的區(qū)別。

通過它執(zhí)行的任務(wù)ThreadPool不能輕易取消(包括ThreadPool。QueueUserWorkItem和委托執(zhí)行異步)。因此,雖然它避免了線程旋轉(zhuǎn)的開銷,但是如果你需要取消使用BackgroundWorker或者(更可能在UI之外)啟動一個線程并保持對它的引用,這樣你就可以調(diào)用Abort()。


查看完整回答
反對 回復(fù) 2019-07-29
  • 3 回答
  • 0 關(guān)注
  • 805 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號