我在我的程序中实现了一个后台工作程序,它正在访问一个在线程外贴花的全局变量。IT 不会导致错误,但会设置 checkillegalstring 属性,并且到处都有跨线程异常。我发现这是因为它使用了我之前声明的全局变量。
我似乎找不到可以在我的后台工作线程中使用全局变量的任何地方,这可能吗?
我在我的程序中实现了一个后台工作程序,它正在访问一个在线程外贴花的全局变量。IT 不会导致错误,但会设置 checkillegalstring 属性,并且到处都有跨线程异常。我发现这是因为它使用了我之前声明的全局变量。
我似乎找不到可以在我的后台工作线程中使用全局变量的任何地方,这可能吗?
最简单的方法是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
请注意其他陷阱,例如可能由此发生的死锁。
也许你可以试试 SyncLock。
看到这个答案:https ://stackoverflow.com/a/915877/153923
例如:
// C#
lock (someLock)
{
list.Add(someItem);
}
// VB
SyncLock someLock
list.Add(someItem)
End SyncLock