-1

我有一些我正在使用的遗留代码,我遇到了一些对我来说没有意义的东西。

 WaitHandle.WaitAny(AutoResetEventArray, System.Threading.Timeout.Infinite, False)
            Do Until aListCount = 0
                SyncLock ALockingObject
                     'doing some stuff
                End SyncLock
            Loop

我远不是线程专家,但我的理解是 WaitAny 会阻塞线程,直到接收到设置事件,所以我想知道 SyncLock 的目的是什么。有人可以解释我对线程的误解或代码以这种方式构造的原因吗?仅供参考 AutoResetEventArray 的大小为 1

4

1 回答 1

1

WaitAny呼叫正在等待其中的任何一个WaitHandle设置AutoResetEventArray。一旦发生这种情况,它就会在循环中锁定ALockingObject. AutoResetEventArray没有任何东西(无论如何在您的代码中)表明和中的句柄之间的关系ALockingObject,所以我假设还有其他操作使用受保护的资源ALockingObject

于 2013-04-22T13:32:48.973 回答