如何在任务完成之前从异步方法获取返回值

时间:2014-11-03 14:36:59

标签: c# wcf asynchronous task

我在WCF Web服务中使用这些方法。

public async Task<bool> DoAsyncWork()
public List<Progress> GetProgress(string progressKey)

如果可能的话,我希望在异步工作开始后立即从DoAsyncWork方法获取progressKey,这样我就可以向用户显示进度。进度保存在数据库中,其中progressKey是DoAsyncWork完成工作的关键。

我理解在WCF服务中使用out参数不是一个好习惯。所以

public async Task<bool> DoAsyncWork(out string progressKey)

不是解决方案。

在任务完成之前不会返回通用bool值,因此我无法使用通用Task类来获取progressKey。

1 个答案:

答案 0 :(得分:0)

将您可以调用的回调传递给您的任务方法,以便为您提供进度。无需输出参数。

void myMethod(IProgressCallback callback)
{
    ... do some work
    callback.NotifyProgress("Ive done some work");
}