【问题标题】:How do I get a return value from an async method before the Task is completed如何在任务完成之前从异步方法获取返回值
【发布时间】:2014-11-03 14:36:59
【问题描述】:

我在 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)

不是解决方案。

在任务完成之前不会返回通用布尔值,因此我无法使用通用任务类来获取进度键。

【问题讨论】:

标签: c# wcf asynchronous task


【解决方案1】:

向您的任务方法传递一个回调,它可以调用该回调来为您提供进度。不需要输出参数。

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

【讨论】:

  • 谢谢,但你确定这将在 WCF Web 服务上使用例如 basicHttpBinding。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
相关资源
最近更新 更多