【问题标题】:How do I restart my C# Mobile Application?如何重新启动我的 C# 移动应用程序?
【发布时间】:2011-10-19 07:02:05
【问题描述】:

我阅读了许多论坛和链接,例如:

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);

我正在使用 windows mobile 6.1 和 CF 3.5

【问题讨论】:

    标签: c# compact-framework windows-mobile-6


    【解决方案1】:

    WinMo 内置了一种机制来防止应用程序的多个实例运行,因此使用 Process 类调用您自己将简单地启动一个 shell 终止的实例。您必须work around that,P/Invoke CeRunAppAtTime 或创建一个单独的看门狗进程,以确保您的应用程序进程始终运行,如果它检测到它已经消失,则启动一个新实例。请注意 CeRunAppAtTime 可以' t 将应用程序安排到未来不到 11 秒,因此会有延迟。

    【讨论】:

      【解决方案2】:

      你不应该。最好的方法是首先修复导致该异常的错误来防止该异常。

      但是,如果您真的、真的、真的需要因为崩溃以外的任何其他原因重新启动您的应用程序,那么您可以在后台启动另一个进程以及您的应用程序,该进程会监视应用程序是否仍在运行并使用 @987654323 启动它如果没有,请再次@。

      (如果您的应用程序设置为在设备上自动运行并且您的设备支持它, - 这不太可能,因为它是 Windows CE 的东西,但为什么不 - 你也可以create Watchdog timers 重新启动整个设备,如果需要。)

      但是一直重启应用程序(比如说每天一次)会破坏用户体验以及用户的信任。因此,您应该改为修复异常。

      【讨论】:

      • 是的,我看到了你的other question 关于崩溃的信息,如果你能澄清一下你实际上捕获了什么样的异常,在什么情况下抛出它,也许有人能做到帮助那部分。
      • 我从不想关闭我的应用程序。当我遇到未处理的异常时,我想打开登录表单。网络中断,...
      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多