1

私はWindows8用のアプリを開発しており、Visual Studio 2012からサスペンド、レジューム、シャットダウンなどをテストできます。ただし、Microsoft Surfaceでアプリをテストすると、シミュレートできない状態がもう1つあります。 。

アプリを開いていて、Surfaceを少しそのままにしておくと、画面が暗くなり、最終的にはシャットオフします。十分に長く(おそらく1〜2分)待ってからスタートボタンを押すと、ロック画面が表示され、そこでサインインできます。サインインすると、アプリを離れた場所が表示されます。ただし、1秒後、すぐにクラッシュし、Surfaceによってスタート画面に戻ります。

VisualStudioとシミュレーターを使用してこれをシミュレートすることはできません。Debug Locationを使用した一時停止/再開では、これは再作成されません。

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

これを見つける方法がわかりません。未処理の例外をすべて標準のメッセージボックスで処理していますが、表示されません。私たちは「非同期ボイド」を回避し、すべてが「非同期タスク」を持ち、適切に待機していることを確認するのに非常に優れています。だから、私は少し立ち往生しています。これがどこで起こっているのかわかりません。

これをシミュレートする方法、または少なくともイベントログをより詳細にする方法を知っている人はいますか?

4

2 に答える 2

2

シナリオをテストするために必要なものはすべて揃っているように思えます。ただし、ローカルで実行されているのと同じように、Surfaceでアプリをリモートでデバッグできることに気付いていない場合があります。その結果、ユースケースを進めて、VisualStudioに例外をキャッチさせることができます。

それは簡単です。ウォークスルーは次のとおりです:http://timheuer.com/blog/archive/2012/10/26/remote-debugging-windows-store-apps-on-surface-arm-devices.aspx

于 2013-01-23T19:53:30.177 に答える
1

わかりました。

MediaElementコントロールとボリュームに問題があります。上記で説明したようにアプリが再アクティブ化されると、音量が変更されたことが通知されます。ただし、何らかの理由でMediaElement.Volume、アプリが再アクティブ化されたときに操作しようとすると、例外がスローされます。この例外にはメッセージはなく、奇妙な16進数だけがあります。

これはタブレットでのみ発生し、検出するのは非常に困難です。基本的に、メディアファイルを再生するすべての人にとって、次のように試して/キャッチする必要があります。

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に感謝します。

于 2013-01-24T01:09:11.340 に答える