2
Microsoft認証ライブラリとAzure AD B2Cを使用して、モバイルアプリケーションのログインを提供しています。そのことを私は、ログインプロセスを開始します非同期イベントハンドラでボタンを提供することができます。Xamarin.iOS async ViewDidLoad
// iOS example
public override void ViewDidLoad()
{
base.ViewDidLoad();
LoginButton.TouchUpInside += async (sender, e) =>
{
try
{
await app.AcquireTokenAsync(...);
}
catch(Exception e)
{
}
}
}
最初のアプリを開いて、私は黙ってAcquireTokenSilentAsync
を使用して、それらを記録することができるようにする必要があります。イベントハンドラでない限り、voidを返すメソッドでasyncを使用しないでください、というメッセージがたくさんありましたが、この場合はViewDidLoad()
で処理する必要があります。私が何か例外を飲み込んだらこれは受け入れられますか?ここで
// is async void okay in this scenario? if not, where else can I put it?
public async override void ViewDidLoad()
{
base.ViewDidLoad();
try
{
await app.AcquireTokenSilentAsync(...);
}
catch(Exception e)
{
// swallow
}
}
これは続行する必要がありますか?TaskCanceledExceptionが発生していますか?それは私が見ているものです – Dismissile
すべきではありません。タスクが完了すると、continueWithが呼び出されます。受信したパラメータは前のタスクです。 – Lineker
成功事例は、少なくともコードが書かれた方法でTaskCanceledExceptionを引き起こします。 – Dismissile