我一直在开发适用于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()
我不知道如何找到这个。我正在使用标准消息框处理所有未处理的异常,但它没有显示出来。我们一直非常善于避免“异步无效”并确保所有内容都具有“异步任务”并等待正常。所以,我有点卡住了。我无法找到这种情况发生的地方。
任何人都知道如何模拟这个,或者至少让事件日志更加冗长?
答案 0 :(得分:1)
好的我明白了。
MediaElement
控制和音量存在问题。当我按照上面的说明重新激活应用程序时,我们会收到有关卷已更改的通知。但出于某种原因,如果我们尝试在应用重新激活时操纵MediaElement.Volume
,则会抛出异常。这个异常没有消息,只有一些奇怪的十六进制数。
这只发生在平板电脑上,而且很难检测到。基本上,对于播放媒体文件的所有人,你应该尝试/捕捉它:
try
{
myMediaElement.Volume = .3;
}
catch (Exception ex)
{
// I don't really know what to do here.
// but at least my app doesn't crash anymore :)
}
无论如何,谢谢你@JerryNixon和@chuex的帮忙。