【发布时间】:2025-12-28 11:45:06
【问题描述】:
我一直在为 Windows 8 开发应用程序,并且可以从 Visual Studio 2012 测试暂停、恢复、关闭等。但是,当我在 Microsoft Surface 上测试应用程序时,还有另一种状态我不能似乎在模拟。
当应用程序打开并且您暂时不触碰 Surface 时,屏幕会变暗,然后最终关闭。如果我等待的时间足够长,可能是 1 或 2 分钟,然后点击开始按钮,它会将我带到我可以登录的锁定屏幕。一旦我登录,它会显示我的应用程序离开它的位置。但是,1 秒后,它立即崩溃,Surface 将我带回开始屏幕。
我无法使用 Visual Studio 和模拟器对此进行模拟。使用调试位置暂停/恢复不会重新创建它。
我查看了 Surface 上的事件日志,发现我的应用程序崩溃并出现以下情况:
The process was terminated due to an unhandled exception.
Exception Info: System.Exception Stack: at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Threading.WinRTSynchronizationContext+Invoker.<InvokeCore>b__0(System.Object) at
System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object) at
System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at
System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
我不知道如何找到这个。我正在使用标准消息框处理所有未处理的异常,但它没有显示出来。我们一直非常擅长避免“异步无效”并确保所有内容都具有“异步任务”并正确等待。所以,我有点卡住了。我找不到发生这种情况的地方。
任何人都知道我可以如何模拟这一点,或者至少让事件日志更详细?
【问题讨论】:
-
我没有答案,但我会在您的加载/保存和导航方法中添加一些日志记录。我假设您使用 LayoutAwarePage 作为基础 - 如果是这样,您可以覆盖
LoadState、SaveState、OnNavigatedTo和OnNavigatedFrom。这些日志至少可以让您了解崩溃前您的应用发生了什么。 -
谢谢@chuex。我尝试了页面事件/状态中的所有内容,但没有运气。这是框架深处的东西。我敢肯定,一旦我弄清楚了这一点,我就会学到一些有价值的东西:)
-
您是否偶然在应用程序中使用了任何计时器,例如
DispatcherTimer?当我的应用程序不在屏幕上时,计时器会暂停,然后在我切换回我的应用程序时立即触发。只是要检查的其他内容。
标签: windows-8 visual-studio-2012 windows-runtime