2009-10-29 11 views
5

मैं एक सी # प्रोग्राम बना रहा हूं जो फ़ाइल को अनजिप करता है, और इस फ़ाइल पर काम करता है। "प्रक्रिया फ़ाइल ग उपयोग नहीं कर सकते: .... क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है"सी # प्रक्रिया को कैसे मारें?

मैं क्या कर सकते हैं

कभी कभी मैं यह संदेश प्राप्त? इसे कैसे मारें?

उत्तर

10

आपको यह पता लगाना होगा कि कौन सी प्रोग्राम फ़ाइल तक पहुंच रहा है। क्या आप अपने स्वयं के अनुप्रयोगों में से किसी एक से बाहर निकलना भूल गए हैं, या क्या कोई अन्य फ़ाइल एक्सेस कर रहा है?

आप प्रक्रिया को मारने के लिए सी # कोड लिख सकते हैं, लेकिन एक बेहतर तरीका यह पता लगाना होगा कि यह पहले से ही किसी अन्य प्रक्रिया द्वारा क्यों उपयोग किया जा रहा है। इसके अलावा

Process[] ps = Process.GetProcessesByName("nameOfProcess"); 

foreach (Process p in ps) 
    p.Kill(); 

, @Darin नोटों के रूप में, तो आप इस अन्य अतः धागा पर एक नज़र ले सकता है:

सी # में नाम nameOfProcess के साथ सभी प्रक्रियाओं को बंद करने के लिए How do I find out which process is locking a file using .NET?

sysinternals उपकरण है कि टिप्पणी में @Darin से उल्लेख किया गया है http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

+2

अपनी फ़ाइल को लॉक करने वाले पहले को खोजने के लिए, आपको sysinternals से ProcessMonitor में एक नज़र डालना चाहिए। बस टूलबार में spyglass पर क्लिक करें और अपनी फ़ाइल का नाम दर्ज करें। आपको उन सभी प्रक्रियाओं की एक सूची मिलती है जिनके पास इस फ़ाइल में खुले हैंडल हैं। – Oliver

2

प्रक्रिया की निगरानी में पाया जाता है काम करेंगे लेकिन Process Explorer के लिए एक बहुत अच्छा अनुप्रयोग है इस। यह Sysinternals से भी है जो अब माइक्रोसॉफ्ट के स्वामित्व में है। व्यवस्थापक के रूप में प्रक्रिया एक्सप्लोरर चलाएं और फिर खोज बटन पर क्लिक करें। यह तब अनुप्रयोगों और धागे दिखाएगा जो फ़ाइल का उपयोग कर रहे हैं।

+0

मैं यह जवाब दूसरा। इससे मुझे मेरी डीबगिंग में बहुत मदद मिली है। – Joel

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