1
我接收在生產與消息的異常上Mutex.ReleaseMutex(「對象同步方法從碼非同步塊被稱爲」在下面的代碼稱爲:對象同步方法是從代碼)不同步塊
Mutex Mutex
{
get { return mutex ?? (mutex = new Mutex(false, mutexName)); }
}
[NonSerialized]
Mutex mutex;
public void Log(/*...*/)
{
Mutex.WaitOne();
try
{
/*...*/
}
finally
{
Mutex.ReleaseMutex();
}
}
可能存在可以使用具有不同且相同mutextName的互斥體的保存進程。 而我仍然不確定那裏的例外情況如何發生。
其實我懷疑它可能是因爲Mutex.WaitOne()和Mutex.ReleaseMutext()中使用不同的互斥體實例,因爲單個進程內部存在一些競態條件,儘管存在疑問。 –
您的互斥體的創建不是線程安全的 - 對於初學者。您最終可能擁有多個互斥鎖。 – vcsjones
是的,釋放呼叫是在額外的一個。 –