0

BackgroundWorkerコンポーネントにはIsBusyフラグがあります。実行中RunWorkerASync、このフラグはTrueに設定されます。終了するとFalseに変わりますかRunWorkerASync、それともRunWorkerCompleted終了しますか?

4

1 に答える 1

-1

IsBusyフラグは、実行前に終了するとすぐにfalseに設定されRunWorkerASyncますRunWorkerCompletedBackgroundWorker次のような別の関数から'操作の結果を取得したいとします。

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 に答える