WaitAny和SyncLock?

时间:2013-04-22 13:29:46

标签: .net multithreading

我有一些我正在使用的遗留代码,我遇到了一些对我没有意义的事情。

 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

1 个答案:

答案 0 :(得分:1)

WaitAny来电正在等待WaitHandle内的任何AutoResetEventArray设置。一旦发生这种情况,它就会锁定ALockingObject。在AutoResetEventArrayALockingObject中,没有(在你的代码中)指示句柄之间的关系,因此我假设还有其他操作使用受ALockingObject保护的资源。