gpt4 book ai didi

c# - 为什么会出现 "Mutex is not owned"异常

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:32 26 4
gpt4 key购买 nike

我正在开发一个旧代码库,它在几个地方有以下代码:

Mutex mutex = new Mutex(false, "<some mutex name>");
mutex.WaitOne();
try {
// do something
} finally {
mutex.ReleaseMutex();
}

这些互斥量用于进程内同步,所以我使用 locks 重写了它们相反,问题似乎消失了。

我知道代码不是最好的代码(与 What is a good pattern for using a Global Mutex in C#? 相比),但这并不能向我解释为什么 mutex.ReleaseMutex() 偶尔会抛出“Mutex is not owned”。

所以我想问一下上面的代码中缺少什么(或有什么问题)会产生异常?

最佳答案

这通常意味着试图释放互斥量的线程不是创建它的线程。

这里有很好的问题分析:http://blogs.msdn.com/b/willstan/archive/2009/03/03/the-attempt-to-release-mutex-not-owned-by-caller-exception-what-is-it-and-how-to-avoid-it.aspx

关于c# - 为什么会出现 "Mutex is not owned"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com