सी # में, मैंसी # प्रक्रिया। स्टार्ट, मुझे कैसे पता चलेगा कि प्रक्रिया समाप्त हो गई है या नहीं?
process.start (program.exe) के साथ एक प्रक्रिया शुरू कर सकता हूं;
मैं कैसे बता सकता हूं कि प्रोग्राम अभी भी चल रहा है, या अगर यह बंद हो गया है?
सी # में, मैंसी # प्रक्रिया। स्टार्ट, मुझे कैसे पता चलेगा कि प्रक्रिया समाप्त हो गई है या नहीं?
process.start (program.exe) के साथ एक प्रक्रिया शुरू कर सकता हूं;
मैं कैसे बता सकता हूं कि प्रोग्राम अभी भी चल रहा है, या अगर यह बंद हो गया है?
MSDN System.Diagnostics.Process
आप पता करने के लिए अभी चाहते हैं, आप HasExited
संपत्ति देख सकते हैं।
var isRunning = !process.HasExited;
यदि यह एक त्वरित प्रक्रिया है, तो बस इसके लिए प्रतीक्षा करें।
process.WaitForExit();
आप पृष्ठभूमि में एक शुरू कर रहे हैं, तो सही पर EnableRaisingEvents सेट करने के बाद बाहर निकल गया घटना की सदस्यता लें।
process.EnableRaisingEvents = true;
process.Exited += (sender, e) => { /* do whatever */ };
किसी ईवेंट हैंडलर को Exited ईवेंट पर असाइन करें।
उस एमएसडीएन लिंक में नमूना कोड है - मैं इसे दोहराना नहीं चाहूंगा।
यदि आप स्थिर Process.Start()
कॉल का उपयोग आप Process
वस्तु को बचाने के (या new
साथ एक उदाहरण बनाने के), और फिर या तो HasExited
संपत्ति की जाँच करें, या अपनी आवश्यकताओं पर निर्भर करता है Exited
घटना की सदस्यता, सुनिश्चित करें।
MSDN documentation for the Process class पर एक नज़र डालें।
विशेष रूप से एक ईवेंट (Exited) आप सुन सकते हैं।
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");
}
आप Process.Start (स्ट्रिंग) विधि का उपयोग कर सकते हैं क्योंकि यह प्रक्रिया का एक उदाहरण देता है। आप उस इंस्टेंस के मौजूदा ईवेंट का उपयोग कर सकते हैं। –
@ माइकमेयर अच्छा बिंदु; मैं हमेशा भूल जाता हूं कि यह इस तरह काम करता है। संपादित करेंगे –