MessageBox.Show在App启动早期导致应用程序终止

时间:2011-07-30 01:11:28

标签: silverlight windows-phone-7 startup messagebox

作为我的应用程序启动过程的一部分,它会检查数据的完整性,如果发现问题,它会向用户弹出一条消息,告诉他们可能需要一段时间才能修复。

我正在使用MessageBox.Show显示消息。因为数据检查是从工作线程完成的,所以我切换到UI线程进行该调用,然后设置ManualResetEvent以在用户确认消息时告诉工作线程。

我从应用程序生命周期的早期开始,通过分离一个工作线程(使用ThreadPool),从主Application类中的构造函数启动数据检查/加载。

当我使用调试器运行并显示消息时,应用程序只是等待输入。当我在没有调试器的情况下运行时,应用程序在显示对话框10秒后终止。

那10秒是一个很大的线索 - 它告诉我操作系统认为应用程序花了很长时间才能初始化(操作系统会杀死启动时间太长的应用程序)。

我认为我的MessageBox.Show在App.RootFrameNavigating有机会被调用之前阻塞了UI线程。

我的问题:

  • 我的诊断听起来不错吗?
  • 我希望尽早开始我的数据加载,因为它几乎完全是IO,除了这个消息框,我越早得到我的模型加载,越好,但你通常会延迟数据加载,直到稍后在应用程序生命周期?
  • 还有其他想法/建议吗?我无法保证哪个页面将成为起始页面,因为该应用程序可以恢复到任何页面。我也在考虑让MessageBox.Show延迟直到应用程序初始化,可能会轮询App.RootFrameNavigating设置的标志 - 这有意义吗?

2 个答案:

答案 0 :(得分:0)

我认为您的问题是在Application构造函数中启动工作线程的结果。您应该使用适当的生命周期事件,在这种情况下:PhoneApplicationService.Activated Event

答案 1 :(得分:0)