3 回答

TA貢獻1876條經(jīng)驗 獲得超5個贊
根據(jù)我對您的問題的理解,您使用的BackgroundWorker
是標(biāo)準線程。
為什么原因BackgroundWorker
建議的事情,你不想占用UI線程是因為它做贏形式的發(fā)展時,暴露了一些不錯的活動。
事件喜歡RunWorkerCompleted
在線程完成它需要做的事情時發(fā)出信號,以及ProgressChanged
在線程進度上更新GUI 的事件。
因此,如果您沒有使用這些,我認為使用標(biāo)準線程不會對您需要做什么造成任何傷害。

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()
。
- 3 回答
- 0 關(guān)注
- 805 瀏覽
添加回答
舉報