2012-09-05 19 views
14

सी # में, मैंसी # प्रक्रिया। स्टार्ट, मुझे कैसे पता चलेगा कि प्रक्रिया समाप्त हो गई है या नहीं?

process.start (program.exe) के साथ एक प्रक्रिया शुरू कर सकता हूं;

मैं कैसे बता सकता हूं कि प्रोग्राम अभी भी चल रहा है, या अगर यह बंद हो गया है?

उत्तर

31

MSDN System.Diagnostics.Process

आप पता करने के लिए अभी चाहते हैं, आप HasExited संपत्ति देख सकते हैं।

var isRunning = !process.HasExited; 

यदि यह एक त्वरित प्रक्रिया है, तो बस इसके लिए प्रतीक्षा करें।

process.WaitForExit(); 

आप पृष्ठभूमि में एक शुरू कर रहे हैं, तो सही पर EnableRaisingEvents सेट करने के बाद बाहर निकल गया घटना की सदस्यता लें।

process.EnableRaisingEvents = true; 
process.Exited += (sender, e) => { /* do whatever */ }; 
1

किसी ईवेंट हैंडलर को Exited ईवेंट पर असाइन करें।

उस एमएसडीएन लिंक में नमूना कोड है - मैं इसे दोहराना नहीं चाहूंगा।

2

यदि आप स्थिर Process.Start() कॉल का उपयोग आप Process वस्तु को बचाने के (या new साथ एक उदाहरण बनाने के), और फिर या तो HasExited संपत्ति की जाँच करें, या अपनी आवश्यकताओं पर निर्भर करता है Exited घटना की सदस्यता, सुनिश्चित करें।

+0

आप Process.Start (स्ट्रिंग) विधि का उपयोग कर सकते हैं क्योंकि यह प्रक्रिया का एक उदाहरण देता है। आप उस इंस्टेंस के मौजूदा ईवेंट का उपयोग कर सकते हैं। –

+0

@ माइकमेयर अच्छा बिंदु; मैं हमेशा भूल जाता हूं कि यह इस तरह काम करता है। संपादित करेंगे –

9
Process p = new Process(); 
p.Exited += new EventHandler(p_Exited); 
p.StartInfo.FileName = @"path to file"; 
p.EnableRaisingEvents = true; 
p.Start(); 

void p_Exited(object sender, EventArgs e) 
{ 
    MessageBox.Show("Process exited"); 
} 
संबंधित मुद्दे