2010-08-19 3 views
15

मैं एक प्रक्रिया taskkill का उपयोग कर मशीन पर चल मारने के लिए चाहते हैं, तो वे अभी भी (एक खिड़कियों सेवा रोक दी गई थी, लेकिन यह समय लगता है एक्स सेकंड के बाद चला रहे हैं प्रक्रियाओं गायब करने के लिए) सबसे सही तरीका सी # में ऊपर पूरा करने के लिए क्या है (.net 2.0 या संभवतः 3.0)?प्रतीक्षा अब नहीं चल रहा है या जब तक समय समाप्त बीत चुका है, जो भी पहले हो

मैं पुष्टि करने के लिए कि क्या एक प्रक्रिया अभी भी चल रहा है, प्रक्रिया का नाम दिया (Process.GetProcesses() का प्रयोग करके) के लिए उपयोगिता विधि है।

पी एस (के रूप में प्रक्रिया मेरे कोड द्वारा पैदा की नहीं है, मैं WaitTillExit जब यह अब चल रहा है पता करने के लिए उपयोग नहीं कर सकते): प्रक्रिया एक दूरस्थ मशीन पर चलता है

उत्तर

31

वास्तव में, आप Process.WaitForExit() का उपयोग कर सकते हैं।

आप प्रक्रिया के माध्यम से

Process p = Process.GetProcessById(iYourID); 

के लिए इंतजार करना और फिर फोन मिल

if(!p.WaitForExit(iYourInterval)) 
{ 
    p.Kill(); 
} 

तुम भी द्वारा

Process.GetProcessesByName(strYourProcessName); 
+0

कूल! अब, अगर मैं इस रिमोट मशीन पर काम कर सकते हैं, यह सिर्फ धन्यवाद (के बाद से मैं एक ही exe नाम के साथ प्रक्रियाओं की एक पूरी गुच्छा को मारने के लिए की जरूरत है) है जो चाहते हैं उसे! – akapulko2020

11

आप Process.WaitForExit कह सकते हैं, गुजर उपयुक्त टाइमआउट। इस तरह से प्रक्रिया को अभी भी चल रहा है या नहीं, यह देखने के लिए आपको अपनी जांच का उपयोग करने की आवश्यकता नहीं होगी।

+0

मुझे यकीन है कि कैसे नहीं कर रहा हूँ उनके नाम के माध्यम से प्राप्त कर सकते हैं प्रक्रियाओं इस को प्राप्त होता है इस प्रक्रिया को "मौत हो गई" अगर यह करने के बाद समय समाप्त बीत चुका है, हालांकि ... – akapulko2020

+0

मैंने सोचा कि आप टी का उपयोग करने के लिए जा रहे थे चल रहा है जब तक askkill? –

+0

'WaitForExit' रिटर्न' FALSE' यदि प्रक्रिया अभी भी समय समाप्ति के बाद से चल रहा है; यह निर्धारित करने के लिए इसका उपयोग करें कि इसे मारना है –

8
Process p = ... 

bool exited = p.WaitForExit(10000); // 10 seconds timeout 

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

  • कोई संबंधित समस्या नहीं^_^