BackgroundWorkerコンポーネントにはIsBusyフラグがあります。実行中RunWorkerASync、このフラグはTrueに設定されます。終了するとFalseに変わりますかRunWorkerASync、それともRunWorkerCompleted終了しますか?
1 に答える
-1
IsBusyフラグは、実行前に終了するとすぐにfalseに設定されRunWorkerASyncますRunWorkerCompleted。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
于 2012-12-07T21:21:09.657 に答える