.net BackgroundWorker的IsBusy属性何时更改?
.net BackgroundWorker的IsBusy属性何时更改?,.net,backgroundworker,.net,Backgroundworker,BackgroundWorker组件有一个IsBusy标志。在执行RunWorkerASync时,此标志设置为True。当RunWorkerASync完成时,或者当RunWorkerCompleted完成时,IsBusy标志将在RunWorkerCompleted执行之前,在RunWorkerCompleted结束时设置为False。假设您想从另一个函数中检索BackgroundWorker操作的结果,如下所示: Dim MyResult = "Not Set" Sub Foo()
BackgroundWorker
组件有一个IsBusy
标志。在执行RunWorkerASync
时,此标志设置为True。当RunWorkerASync
完成时,或者当RunWorkerCompleted
完成时,IsBusy
标志将在RunWorkerCompleted
执行之前,在RunWorkerCompleted
结束时设置为False。假设您想从另一个函数中检索BackgroundWorker
操作的结果,如下所示:
Dim MyResult = "Not Set"
Sub Foo()
DoSomeStuff()
RunWorkerASync()
'Wait for worker
While Worker.IsBusy
Wait()
End While
'Use result
'This won't work because MyResult hasn't been
'set yet by the RunWorkerCompleted handler
'Will Print "Not Set", unless, by a timing quirk,
'RunWorkerCompleted has enough time to execute
'Before using its result.
Print MyResult
End Sub
Sub RunWorkerASync()
e.Result = "Result has been set"
End Sub
Sub RunWorkerCompleted()
MyResult = e.Result 'Worker's output
End Sub
“在RunWorkerCompleted执行之前”-这不是真的,请参阅: