[英]RunWorkerAsync() method of BackgroundWorker doesn't trigger Do_Work event
[英]Why does the BackgroundWorker's ProgressChanged event work without calling RunWorkerAsync?
我有一個關於BackgroundWorker
的問題。 我可以在沒有使用RunWorkerAsync
啟動線程的情況下調用ProgressChanged
事件。
我不明白為什么會這樣。 如果新線程甚至還沒有啟動,它將如何通知原始線程?
這似乎無論如何都可以工作,因為它在沒有問題的情況下更新了GUI,在我實現BackgroundWorker
之前就不是這樣了。
調用ReportProgressChanged()
將始終引發ProgressChanged
事件,無論它從哪個線程調用。
在ReportProgressChanged()
內部,有一種機制,如果未從UI線程調用該事件,則會在UI線程上引發事件。 如果ReportProgressChanged()
正在從UI線程調用,那么它只是引發事件,而無需做額外的編組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.