我有一些我正在使用的遗留代码,我遇到了一些对我没有意义的事情。
WaitHandle.WaitAny(AutoResetEventArray, System.Threading.Timeout.Infinite, False)
Do Until aListCount = 0
SyncLock ALockingObject
'doing some stuff
End SyncLock
Loop
我远不是线程专家,但我的理解是WaitAny阻塞线程直到收到set事件,所以我想知道SyncLock的目的是什么。有人可以解释我对线程的误解或者代码以这种方式构造的原因吗? FYI AutoResetEventArray的大小是1
答案 0 :(得分:1)
WaitAny
来电正在等待WaitHandle
内的任何AutoResetEventArray
设置。一旦发生这种情况,它就会锁定ALockingObject
。在AutoResetEventArray
和ALockingObject
中,没有(在你的代码中)指示句柄之间的关系,因此我假设还有其他操作使用受ALockingObject
保护的资源。