我为照片选择器任务和相机选择器任务添加了以下扩展方法。
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.
}
添加后一切正常,但我的问题是,通过设置墓碑模式调用任务的时间,我等待后的代码没有执行(即完成的事件)。我该如何解决这种情况,我期待一个能解决我在上述实现(异步/等待)上的问题的答案。没想到在构造函数中注册事件的答案。