2014-11-03 46 views
0

我在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值,所以我不能使用通用任务类来获取progressKey。

+0

本身不是我的专业领域,但本文可能有所帮助http://blogs.msdn.com/b/dotnet/archive/2012/06/06/async-in-4-5-enabling- progress-and-cancellation-in-async-apis.aspx – bUKaneer 2014-11-03 14:39:39

+0

谢谢@bUKaneer,但根据我的说明,我无法使用WCF Web服务上的Progress类。 – AxdorphCoder 2014-11-03 14:50:09

+0

你可以整合signalR吗? http://stackoverflow.com/a/24185477/1370442 – bUKaneer 2014-11-03 16:18:02

回答

0

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

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

谢谢,但你确定这将通过使用基本HttpBinding的WCF Web服务工作。 – AxdorphCoder 2014-11-03 15:02:56

相关问题