2010-08-20 4 views
6

जैसा कि मुझे पता है Application.Restart() एक एप्लिकेशन को पुनरारंभ करता है और एप्लिकेशन का नया उदाहरण बनाता है। क्या यह उदाहरण नई प्रक्रिया में तैयार होगा, या पुरानी प्रक्रिया का उपयोग किया जाएगा?आवेदन करता है। रीस्टार्ट() आवेदन के लिए नई प्रक्रिया बनाता है या नहीं?

उत्तर के लिए धन्यवाद।

उत्तर

9

यह एक नई प्रक्रिया में चलता है। documentation प्रक्रिया का पुन: उपयोग किया गया है या नहीं, इस पर थोड़ा अस्पष्ट लगता है लेकिन इसे प्रारंभ में टेक्स्ट बॉक्स में प्रक्रिया आईडी दिखाकर सत्यापित किया जा सकता है।

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Application.Restart(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     textBox1.Text = Process.GetCurrentProcess().Id.ToString(); 
    } 
} 

तुम भी .NET Reflector कि एक नई प्रक्रिया का उपयोग कर बनाई गई है देख सकते हैं:

public static void Restart() 
{ 
    // ... 
    ExitInternal();   // Causes the application to exit. 
    Process.Start(startInfo); // Starts a new process. 
    // ... 
} 
+1

हां, यह वास्तव में एक अच्छा जवाब है। – Yuriy

4

documentation के अनुसार यह एप्लिकेशन का एक नया उदाहरण शुरू करेगा और इस प्रकार नई प्रक्रिया शुरू होगी। यदि आवेदन शुरू करते समय आपूर्ति की गई कमांड लाइन तर्क थे तो वही तर्क नई प्रक्रिया को प्रदान किए जाएंगे।

0

यह एक नया उदाहरण शुरू होता है। आप इस मुद्दे पर चल सकते हैं कि यदि आपके मूल एप्लिकेशन में अभी भी कार्यकर्ता धागा चल रहा है, तो मूल प्रक्रिया जल्द ही नहीं मारे जा सकती है कि आप एक ही समय में चल रहे 2 उदाहरण (जो कार्य प्रबंधक में दिखाए जाएंगे) समाप्त हो जाएंगे।

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