我正在使用 Monitor 类来管理关键部分。但有时我会遇到SynchronizationLockException
以下消息
An unhandled exception of type 'System.Threading.SynchronizationLockException' occurred in ManagedType.dll
Additional information: Object synchronization method was called from an unsynchronized block of code.
我的代码如下
Object^ lockObj = gcnew Object(); //Global variable
bool GetValue()
{
try
{
Monitor::Enter(lockObj);
return this.value;
}
finally
{
Monitor::Exit(lockObj);
}
}
调用SynchronizationLockException
时抛出。Monitor::Exit(lockObj)
我在这个论坛和互联网上搜索过,但大多数主题包括 MSDN 都说“当您尝试在 Monitor.Enter() 和 Monitor.Exit() 中使用值类型变量而不是引用类型时,将引发此异常”。
但就我而言,我使用 lockObj 作为参考对象。所以我不知道为什么它会抛出这个异常。有人可以帮助我吗?
非常感谢,
T&T集团!