は、私が観測されない例外を無視するように、これを行うために使用される:それは良い習慣であるかどうかMonoTouchでasync/awaitで観測されない例外を無視する方法は? MonoTouchでの以前のバージョンで
TaskScheduler.UnobservedTaskException += delegate(object sender, UnobservedTaskExceptionEventArgs e) {
Console.WriteLine (e);
e.SetObserved();
};
は議論の余地があるが、私はasync
/await
キーワードと同じ効果を達成するために知りたいですnow officially supported in Xamarin.iOS 6.4。私はそれを実行すると、AsyncVoidMethodBuilder
でデバッガを一時停止
async void OnClick (object sender, EventArgs e)
{
await Task.Run (() => { throw new Exception(); });
}
:ここ
は、私がテストに使用コードです
私は.NET 4.5おそらくchanged the behaviour so unobserved exceptions don't crash the appこのブタを読みます例外がUIKit同期コンテキストに送信され、それらを処理できない場合は役に立ちません。
MonoTouchのawait
の観測されない例外を無視する方法はありますか?
「AsyncVoidMethodBuilder」で「一時停止」しています。これは、継続してヒットした場合、例外は最終的にハンドラによって飲み込まれることを意味しますか?これは、この例外でデバッガだけが停止するケースですか?また、あなたが参照した記事には、.NETのような例外処理を行うためのapp.config設定がいくつか含まれています。 –
@ブラッド:私が続行すると、プロセスがクラッシュします。その理由は、基本的なUIKitSynchronizationContextによってUIスレッドで例外が再スローされるからです。設定は、動作が*より厳しくなるように設定されているので、助けにはならないはずです。あなたは有効なポイントを立てました。以前のバージョンでは、UIスレッドにスローされたにもかかわらず、Unobservedハンドラで例外をキャッチすることができました。 –
タスク、AppDomainなどのさまざまな監視されていないハンドラがあります。UI固有のハンドラを使用してみてください。 SynchronizationContextで例外を返すことをお待ちしております。 –