據我所知Application.Restart()
重新啓動應用程序並創建應用程序的新實例。這個實例是否會在新進程中創建,否則將使用舊進程?Application.Restart()是否爲應用程序創建新進程?
感謝您的回答。
據我所知Application.Restart()
重新啓動應用程序並創建應用程序的新實例。這個實例是否會在新進程中創建,否則將使用舊進程?Application.Restart()是否爲應用程序創建新進程?
感謝您的回答。
它運行在一個新的過程中。 documentation似乎有點不清楚該過程是否被重用,但可以通過在啓動時在文本框中顯示過程ID來驗證。
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.
// ...
}
根據documentation它將啓動一個新的應用程序實例,從而新的過程。如果在啓動應用程序時提供了命令行參數,那麼相同的參數將被提供給新進程。
它啓動一個新的實例。如果您的原始應用程序仍然有工作線程正在運行,您可能會遇到問題,原始進程可能不會很快被殺死,您將最終同時運行兩個實例(將顯示在任務管理器中)。
是的,這是一個非常好的答案。 – Yuriy 2010-08-20 12:21:34