2010-11-30 12 views
15

फेंकता है मैं named mutex बनाने की कोशिश कर रहा हूं, लेकिन जब मैं कन्स्ट्रक्टर को कॉल करता हूं तो मुझे DirectoryNotFoundException मिलता है! एक म्यूटेक्स फाइल सिस्टम तक पहुंचने का प्रयास क्यों कर रहा है, और मुझे कैसे पता चलेगा कि वैध पथ क्या है? क्या कोई विशेष निर्देशिका है जिसमें म्यूटेक्स रखा जाना चाहिए, और यह नाम से कैसे मेल खाता है?एक म्यूटेक्स बनाना एक निर्देशिका NotFoundException

संपादित करें: मैं 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

यिक्स। यह प्रश्न केवल 15 मिनट पहले पोस्ट किया गया था और पहले से ही यह "mutex directorynotfoundexception" के लिए Google खोज में दूसरा परिणाम है। यह जल्दी क्रॉलिंग है। – Wyzard

+0

म्यूटेक्स बनाने के दौरान [पथ का एक हिस्सा नहीं मिला "त्रुटि का संभावित डुप्लिकेट] (https://stackoverflow.com/questions/20714120/could-not-find-a-part-of-the-path-error साइड-मेकिंग-म्यूटेक्स) –

उत्तर

16

आह, पाया क्या समस्या थी। मेरे म्यूटेक्स नाम में \ था, जो खिड़कियां पथ चरित्र के रूप में व्याख्या कर रही थीं। चल रहा है:

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

समस्या

+6

मैं ['Path.GetInvalidPathChars'] (http://msdn.microsoft.com/en-us/library/system.io.path] से किसी भी वर्ण के किसी भी उदाहरण को बदलने का सुझाव दूंगा। getinvalidpathchars.aspx) (उदाहरण के लिए '/' भी अमान्य है)। – Richard

+4

यह वास्तव में एक पथ चरित्र नहीं है, [यहां एक पूर्ण स्पष्टीकरण है] (http://stackoverflow.com/a/20714164/1729885)। कर्नेल ऑब्जेक्ट नेमस्पेस की वजह से बैकस्लैश को छोड़कर सभी वर्ण वैध हैं। –

संबंधित मुद्दे