首页 > 解决方案 > 部署时Winform应用程序重新启动不起作用

问题描述

一旦发生未处理的异常,我需要重新启动我的应用程序。这是一个 .NET WinForm 应用程序。

  [STAThread]
    static void Main()
    {
        try
        {
            Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());

        }
        catch (SystemException ex)
        {
            Log.AddEntry(ex.Message);
        }


    }
    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
        Console.WriteLine(e.Exception.Message);
        Application.Exit();
        System.Diagnostics.Process.Start(Environment.CurrentDirectory+"\\Taskman.exe");
    }

我故意使用按钮单击引发异常。当我在我的机器上测试发布版本时,它会关闭,然后正常重启。但是当我在生产机器上部署它时,它没有。

任何想法?

谢谢。

标签: c#winforms

解决方案


您应该在退出当前进程之前启动新进程,并确保将正确的路径传递给该Process.Start方法:

static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
    Console.WriteLine(e.Exception.Message);
    System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
    Application.Exit();
}

推荐阅读