我拉了the code straight from MSDN。这会更新我的应用程序,但Restart()
不起作用。应用程序关闭,但不会重新启动。
我向MenuItem
添加了Form
以验证Restart()
是否正常工作:
private void restartToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Restart();
}
这将重新启动应用程序(当然,它不执行任何更新并且是用户启动的,因此它是相当无用的)。
此应用程序我没有其他任何内容。关闭时没有表单的事件处理程序,没有。这是我可以构建的最基本的Windows Forms应用程序(它只在ImagePanel
中显示资源JPEG)。
为什么Restart()
在这里不起作用?
答案 0 :(得分:5)
您的申请是Windows Forms还是WPF?由于Application.Restart
仅存在于Windows窗体Application
对象(System.Windows.Forms.Application)中,因此在WPF Application
(System.Windows.Applications)下运行的应用程序不支持{{1}}。你仍然可以调用它,但由于应用程序上下文不同,它不起作用。
答案 1 :(得分:4)
如果您正在使用Mutex或类似的东西来确保一次只运行一个应用程序实例,则会导致此问题。
答案 2 :(得分:0)
您确定从主窗体调用Application.Restart吗?如果您使用.ShowDialog调用表单然后从该表单调用Application.Restart,它将无法工作,因为.ShowDialog导致对话框窗体在单独的线程上运行。
答案 3 :(得分:0)
尝试使用BeginInvoke包装它,以防万一它不在主STA主题上。
答案 4 :(得分:-1)
尝试提出一个新流程,也许可以解决它:
Process.Start(Application.ExecutablePath);