创建互斥锁会抛出DirectoryNotFoundException

时间:2010-11-30 12:30:45

标签: .net mutex

我正在尝试创建一个named mutex,但是当我调用构造函数时,我得到一个DirectoryNotFoundException!为什么互斥锁试图访问文件系统,我怎么知道什么是有效路径?是否应该放置互斥锁的特定目录,以及它与名称的对应关系?

编辑:我正在使用Mutex(bool, string)重载,例外是:

System.IO.DirectoryNotFoundException: Could not find a part of the path '<mutex name>'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.Threading.Mutex.<>c__DisplayClass3.<.ctor>b__0(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean& createdNew, MutexSecurity mutexSecurity)
at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name)

1 个答案:

答案 0 :(得分:19)

啊,发现问题是什么。我的互斥锁名称中包含\,其中Windows正在解释为路径字符。运行:

mutexName = mutexName.Replace(Path.DirectorySeparatorChar, '_');

修复了问题