10

可能重复:
为什么 Application.Restart() 不可靠?

直接从 MSDN 中提取了代码。这会更新我的应用程序,但Restart()不起作用。应用程序关闭,但不会重新启动。

我添加了一个MenuItemForm验证它是否Restart()有效:

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

这将重新启动应用程序(当然,它不执行更新并且是用户启动的,所以它是相当无用的)。

这个应用程序我没有其他事情要做。关闭时表单没有事件处理程序,什么都没有。这是我可以构建的最基本的Windows 窗体应用程序(它只是在 JPEG中显示资源JPEGImagePanel)。

为什么Restart()在这里不起作用?

4

5 回答 5

5

您的应用程序是Windows 窗体还是WPF?因为Application.Restart只存在于 Windows 窗体Application对象 ( System.Windows.Forms.Application ) 中,并且不受 WPF Application( System.Windows.Applications ) 下运行的应用程序支持。您仍然可以调用它,但由于应用程序上下文不同,它不起作用。

于 2009-06-12T20:10:23.633 回答
4

If you are using a Mutex, or something of the like to ensure only one instance of the application is running at a time, that be causing this issue.

于 2009-05-01T19:30:15.150 回答
1

尝试用BeginInvoke包装它,以防它不在主STA线程上。

于 2009-05-20T17:33:18.180 回答
0

您确定要从主窗体调用 Application.Restart 吗?如果您使用 .ShowDialog 调用表单,然后从该表单调用 Application.Restart,它将不起作用,因为 .ShowDialog 会导致对话框表单在单独的线程上运行。

于 2009-04-23T01:45:37.053 回答
-1

尝试提出一个新流程,也许可以解决它:

Process.Start(Application.ExecutablePath);
于 2009-04-08T18:09:56.903 回答