Почему Application.Restart () не является надежным? - PullRequest
42 голосов
/ 18 сентября 2008

Использование метода Application.Restart() в C # должно перезапустить текущее приложение: но кажется, что это не всегда работает.

Есть ли причина этой проблемы, может кто-нибудь сказать мне, почему она не работает все время?

Ответы [ 11 ]

0 голосов
/ 03 февраля 2016

Я знаю, что это старая тема, но я нашел обходной путь. Надеюсь, это поможет кому-то еще нуждающемуся.

Мне нужно было решение, которое запускало бы последовательность обновления во время запуска приложения ClickOnce из кода. Applicatoin.Restart не делал этого. Мне нужен был способ проверить наличие обновлений, а затем вызвать встроенный менеджер обновлений, чтобы мне не пришлось писать собственный.

    'VB Code Sample
    Dim strStart As String = System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu) & "\Programs\Folder\YourApplication.appref-ms"
    Application.Exit()
    Try
        Process.Start(strStart)
    Catch ex As Exception
        'Do something with the exception
    End Try

Единственная проблема, которую я вижу в этом обходном пути, заключается в том, что пользователь может удалить ярлык из меню «Пуск». Если это вызывает озабоченность, вы можете написать код для копирования ссылки в меню «Пуск» в какую-то папку по вашему выбору, предпочтительно в папку приложения ClickOnce. Это важно, потому что значок меню «Пуск» для вашего приложения не является .lnk или .exe, на самом деле это ссылка .appref-ms. См. ClickOnce .appref-ms больше, чем ссылка на файл .application? Эта ссылка объясняет это более подробно.

Этот код будет работать с приложениями ClickOnce SingleInstance.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...