Async / Await方法以及Choosers和Launchers的问题

时间:2013-01-31 08:07:17

标签: c# windows-phone-8 async-await async-ctp

我为照片选择器任务和摄像机选择器任务添加了以下扩展方法。

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.
}

添加之后,每件事情都运行正常,但我的问题是,通过设置逻辑删除模式调用任务的时间,我的等待后的代码没有执行(即已完成的事件)。我如何解决这种情况,我期待一个答案,解决我在上述实现(async / await)上的问题。不期望在构造函数中注册事件的答案。

1 个答案:

答案 0 :(得分:2)

我看到你正在关注my article,但事实证明我忘了我当前的解决方案不适用于墓碑,正如文章评论中有人指出的那样。

我正准备修复此问题,一旦我准备好就会更新线程!