什么时候在BackgroundWorker上更改IsBusy属性?

时间:2012-12-07 21:21:10

标签: .net backgroundworker

BackgroundWorker组件有一个IsBusy标志。当它正在执行RunWorkerASync时,此标志设置为True。在RunWorkerASync完成或RunWorkerCompleted完成时,它会更改为False吗?

1 个答案:

答案 0 :(得分:0)

IsBusy标志在RunWorkerASync执行之前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