写真選択タスクとカメラ選択タスクに以下の拡張メソッドを追加しました。
public static Task<TTaskEventArgs> ShowAsync<TTaskEventArgs>(this ChooserBase<TTaskEventArgs> chooser) where TTaskEventArgs : TaskEventArgs
{
var taskCompletionSource = new TaskCompletionSource<TTaskEventArgs>();
EventHandler<TTaskEventArgs> completed = null;
completed = (s, e) =>
{
chooser.Completed -= completed;
taskCompletionSource.SetResult(e);
};
chooser.Completed += completed;
chooser.Show();
return taskCompletionSource.Task;
}
そして、このようにボタンクリックでこのメソッドを呼び出しました。
var photoResult = await new PhotoChooserTask().ShowAsync();
if (photoResult.TaskResult == TaskResult.OK)
{
// set the photo to image source.
}
これを追加した後、すべてが正常に機能していますが、私の問題は、廃棄モードをオンに設定してタスクを呼び出すときに、待機後のコードが実行されていないことです(つまり、完了イベント)。この状況にどのように取り組むことができるか、上記の実装(非同期/待機)に関する問題を解決する答えを期待しています。コンストラクターにイベントを登録するという答えを期待していません。