2010-11-30 15 views
15

oluşturur Bir named mutex oluşturmaya çalışıyorum, ancak kurucuyu aradığımda bir DirectoryNotFoundException olsun! Neden bir muteks dosya sistemine erişmeye çalışıyor ve geçerli bir yolun ne olduğunu nasıl bilebilirim? Muteksin yerleştirilmesi gereken belirli bir dizin var mı, ve bu isme nasıl karşılık geliyor?Bir Mutex oluşturma bir DirectoryNotFoundException

DÜZENLEME: Mutex(bool, string) aşırı kullanıyorum ve istisna değildir:

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

Hangi yapıcı kullandığınız sorununu giderir ve istisna ayrıntıları nelerdir? –

+0

Yikes. Bu soru sadece 15 dakika önce yayınlandı ve zaten bir "mutex directorynotfoundexception" araması için Google aramada ikinci sonuç. Bu hızlı gezinme. – Wyzard

+0

Mutex oluştururken ["Yolun bir parçası bulamadı" hatasının olası kopyası) (https://stackoverflow.com/questions/20714120/could-not-find-a-part-of-the-path-error -while-creation-mutex) –

cevap

16

Ah sorunun ne buldum. Benim mutex ismim içinde \ vardı, bu pencereler bir yol karakteri olarak yorumlanıyordu. Koşu:

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

+6

Karakterlerin herhangi bir örneğini ['Path.GetInvalidPathChars'] 'dan (http://msdn.microsoft.com/en-us/library/system.io.path) değiştirmeyi öneririm. getinvalidpathchars.aspx) (ör. '/' de geçersizdir). – Richard

+4

Gerçekten bir yol karakteri değil, [burada tam bir açıklama var] (http://stackoverflow.com/a/20714164/1729885). Ters eğik çizgi dışındaki tüm karakterler, Çekirdek Nesne Ad Alanları nedeniyle geçerlidir. –