.NET Mutex.ReleaseMutex 和 Mutex.Close
Posted
技术标签:
【中文标题】.NET Mutex.ReleaseMutex 和 Mutex.Close【英文标题】:.NET Mutext.ReleaseMutex and Mutex.Close 【发布时间】:2011-09-22 18:13:22 【问题描述】:这两者有什么区别?如果我在关闭我的应用程序时使用Mutex.Close()
而不是Mutex.Release()
,会有什么副作用?
【问题讨论】:
【参考方案1】:ReleaseMutex 用于允许另一个线程获取互斥锁。只有在您获得互斥体(称为WaitOne
并获得它或通过构造函数获得)时才应调用它。 重要提示如果您还没有获得互斥体,ReleaseMutex
会抛出异常。
Close用于清理通过声明互斥对象分配的资源,无论你是否阻塞过它,如果你获得了互斥体,它将释放它(相当于调用ReleaseMutex
。如果您打算锁定整个应用程序的互斥锁(即使用它来确保您的应用程序的单个实例),那么我会将它包装在一个 using 语句中,如 Joseph Albahari's 线程指南中的示例(必须阅读)。
【讨论】:
感谢您的澄清。我听取了您的建议,并将我的解决方案 (here) 中的Mutex.ReleaseMutex()
更改为 Mutex.Close()
,以解决 VB 的应用程序框架和 ClickOnce API 之间的冲突。以上是关于.NET Mutex.ReleaseMutex 和 Mutex.Close的主要内容,如果未能解决你的问题,请参考以下文章