Monitor.Enterとの正しい動作について何かが欠けていると思いますMonitor.TryEnter。これは、問題を残りのコードから分離するために私が書いたコードの一部です。
object lockObj = new object();
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
結果は常にtrueです。ここに驚きはありません。
object lockObj = new object();
Monitor.Enter(lockObj);
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
でも今回もそうtrueです。それでlockObj、後にロックされているMonitor.Enterかどうか?これを少し見直してください。