我的程序中实现了一个背景工作人员,它正在访问在线程外进行了缩放的全局变量。 IT不会造成任何错误,但会设置checkillegalstring属性,并且到处都有跨线程异常。我发现这是因为它使用了我之前声明的全局变量。

我似乎找不到任何可以在backgroundworker线程中使用全局变量的地方,这有可能吗?

最佳答案

最简单的方法是使用SyncLock

Sub firstNewThread()
    SyncLock objLock
        'Access global object
    End SyncLock
End Sub
Sub secondNewThread()
    SyncLock objLock
        'Guaranteed to not be executing while block in first thread is running
    End SyncLock
End Sub


只需注意其他陷阱,例如由此可能发生的死锁。

10-08 11:07