2009-03-23 11 views
26

मैं जो एक प्रक्रिया बनाने के लिए System.Diagnostics.Process वर्ग का उपयोग करता है एक सी # आवेदन में लिखा है,Process.Close() बनाया गया है नहीं समाप्त प्रक्रिया, सी #

Process P1 = new Process(); 
P1.FileName = "myexe.exe"; 

और अन्य उचित सेटिंग्स का उपयोग कर।

मैंने इसे एक exe फ़ाइल से लिंक किया है जो लगभग 10 मिनट तक चलता है। (मैं प्रोग्राम के रन-टाइम को मापने के लिए प्रोग्राम लिख रहा हूं)। अब बीच में मैं चल रही प्रक्रिया को रद्द करना चाहता हूं। तो मैं रद्द बटन के समारोह में लिखा है,

Process.Close(); 

लेकिन कार्य प्रबंधक मैं अभी भी चल रहा है myexe.exe देखने में, यह निरस्त नहीं होती है। क्या करें?

उत्तर

49

Process.Close() प्रक्रिया को रद्द करने के लिए नहीं है - यह केवल प्रक्रिया, और संबंधित संसाधनों पर आपके "स्थानीय" दृश्य को रिलीज़ करने के लिए है।

मुझे लगता है कि आपका मतलब Process.Kill() या Process.CloseMainWindow() है। व्यक्तिगत रूप से मैं इसे बंद करने का एक और अधिक शानदार तरीका खोजने की कोशिश करता हूं।

+5

और यह क्या होगा? अंतर्निहित exe इसका समर्थन करता है तो सभी धाराओं को फ्लश करने के लिए और फिर आंतरिक निरस्त विधि भेजें? –

+0

@ अनिरुध - मुझे लगता है कि उसका मतलब है "आपको ऐप को बंद करने की आवश्यकता क्यों है?"। निष्पादन के बीच में एक प्रक्रिया को छोड़ना आम तौर पर अनुकूल नहीं है क्योंकि इससे डेटा भ्रष्टाचार होता है। – StingyJack

+5

मैं आमतौर पर इसे मारने के बजाए "कृपया अभी बंद करें" ऐप को इंगित करने का प्रयास करता हूं। यदि आप ऐप को नियंत्रित करते हैं, तो आप इसे अपनी मूल प्रक्रिया को दूर करने के लिए देख सकते हैं। –

4

मुझे लगता है कि Process.Kill() वह है जिसे आप ढूंढ रहे हैं।

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