-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を待っています。それが起こると、ループ内でロックされます。とのハンドル間の関係を示すものは (とにかくコード内に) ないので、 によって保護されたリソースを使用する他の操作があると思います。WaitHandleAutoResetEventArrayALockingObjectAutoResetEventArrayALockingObjectALockingObject

于 2013-04-22T13:32:48.973 に答える