我阅读了许多论坛和链接,如:
How do I restart my C# WinForm Application?
但所有这些都适用于不适用于移动设备的Windows。当我捕获未处理的异常时,如何重新启动我的移动应用程序。现在应用程序关闭,当我捕获未处理的异常,但我不想关闭它,所以我想重新启动它。
这不起作用:
ProcessStartInfo s = new ProcessStartInfo();
s.FileName = Assembly.GetExecutingAssembly().GetName().CodeBase;
s.UseShellExecute = false;
Process.Start(s);
我是uisng windows mobile 6.1和CF 3.5
答案 0 :(得分:4)
WinMo有一个机制来防止应用程序的多个实例运行,因此使用Process类调用自己只会启动shell终止的实例。您必须work around that,P / Invoke CeRunAppAtTime
或创建一个单独的监视程序进程,以确保您的应用程序进程始终在运行,如果检测到它已经消失,则启动一个新实例。预先警告{ <1}}在将来不到11秒的时间内无法安排应用,因此会有延迟。
答案 1 :(得分:2)
你不应该。最好的方法是通过修复导致它的错误来防止该异常。
但是如果真的,真的,真的需要重新启动应用程序而不是崩溃,那么你可以在后台启动另一个进程以及监视应用程序是否仍在运行的应用程序并使用{{启动它1}}再次,如果没有。
(如果你的应用程序被设置为在设备上自动运行而你的设备支持它,那么这不太可能,因为它是Windows CE的东西,但为什么不是 - 你也可以create Watchdog timers重启整个设备,如果需要。)
但是,一直重新启动应用程序(假设每天一次)会破坏用户体验以及用户的信任。所以你应该修改异常。