'Application.Restart'无法在ClickOnce部署的应用程序中运行

时间:2009-04-08 16:54:05

标签: c# clickonce restart updating

  

可能重复:
  Why is Application.Restart() not reliable?

我拉了the code straight from MSDN。这会更新我的应用程序,但Restart()不起作用。应用程序关闭,但不会重新启动。

我向MenuItem添加了Form以验证Restart()是否正常工作:

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

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

此应用程序我没有其他任何内容。关闭时没有表单的事件处理程序,没有。这是我可以构建的最基本的Windows Forms应用程序(它只在ImagePanel中显示资源JPEG)。

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

5 个答案:

答案 0 :(得分:5)

您的申请是Windows Forms还是WPF?由于Application.Restart仅存在于Windows窗体Application对象(System.Windows.Forms.Application)中,因此在WPF ApplicationSystem.Windows.Applications)下运行的应用程序不支持{{1}}。你仍然可以调用它,但由于应用程序上下文不同,它不起作用。

答案 1 :(得分:4)

如果您正在使用Mutex或类似的东西来确保一次只运行一个应用程序实例,则会导致此问题。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

尝试使用BeginInvoke包装它,以防万一它不在主STA主题上。

答案 4 :(得分:-1)

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

Process.Start(Application.ExecutablePath);