Перезапуск приложения Winform не работает при развертывании - PullRequest
0 голосов
/ 09 января 2019

Мне нужно перезапустить приложение, как только произойдет необработанное исключение. Это приложение .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");
    }

Я специально выбрасываю исключение нажатием кнопки. Когда я тестирую версию релиза на моей машине, она закрывается, а затем перезапускается нормально. Но когда я развернул его на производственной машине, это не так.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Позвоните по этому номеру:

Application.Restart();

вместо Application.Exit();

0 голосов
/ 09 января 2019

Вы должны начать новый процесс перед выходом из текущего и убедиться, что вы передаете правильный путь к методу 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...