Как перезапустить мобильное приложение C #? - PullRequest
0 голосов
/ 19 октября 2011

Я читаю много форумов и ссылок вроде:

Как перезапустить приложение C # WinForm?

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

Это не работает:

ProcessStartInfo s = new ProcessStartInfo();
            s.FileName = Assembly.GetExecutingAssembly().GetName().CodeBase;
            s.UseShellExecute = false;
            Process.Start(s);

я использую windows mobile 6.1 и CF 3.5

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

В WinMo встроен механизм, предотвращающий запуск нескольких экземпляров приложения, поэтому вызов себя с помощью класса Process просто запустит экземпляр, который завершается оболочкой. Вы должны обойти это , P / Invoke CeRunAppAtTime или создать отдельный сторожевой процесс, который гарантирует, что процесс вашего приложения всегда работает, запуская новый экземпляр, если он обнаруживает, что когда-нибудь ушел .. Имейте в виду, что CeRunAppAtTime не может запланировать приложение менее чем на 11 секунд в будущем, поэтому будет задержка.

2 голосов
/ 19 октября 2011

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

Но если вам действительно нужно перезапустить приложение по любой другой причине, кроме сбоев, тогда вы можете запуститьдругой процесс в фоновом режиме вместе с вашим приложением, который наблюдает, если приложение все еще работает, и запускает его снова с Process.Start(), если это не так.

(Если ваше приложение настроено на автоматический запуск на устройстве иВаше устройство поддерживает его, что маловероятно, поскольку это Windows CE, но почему бы и нет, вы также можете создать сторожевые таймеры , чтобы перезапустить все устройство, если это необходимо.

НоПостоянный перезапуск приложения (скажем, раз в день) портит пользовательский опыт и доверие пользователей.Так что вместо этого вы должны исправить исключение.

...