假设我使用ASP.NET MVC 4实现了一个Web服务,该服务具有一个公开一个方法的控制器:
Response Process(Request request);
此Web服务与用于处理请求的中间层服务进行通信。中间层服务合同服务看起来像这样:
[ServiceContract(CallbackContract=typeof(IServiceCallback))]
interface IService
{
[OperationContract(IsOneWay=true)]
void Process(Request request);
}
interface IServiceCallback
{
[OperationContract(IsOneWay=true)]
void Processed( Response response );
}
此服务通过匹配的Process/Processed方法异步处理请求。
从web服务异步调用这个中间层服务的最佳方式是什么?当回调方法显然在不同的工作线程中返回时,我很难理解如何从回调线程获得响应以返回到调用客户端?
谢谢你的帮助。
您必须使用异步和等待。阅读此链接http://msdn.microsoft.com/en-us/library/vstudio/hh300224.aspx
在调用代码中尝试一下。
public void DoStuff()
{
using(var proxy = new Proxy())
{
var result = await proxy.Process();
Task.Run(() => Processed(result));
}
}
或者这个。。。它与.net 4 一起工作
public void DoStuff()
{
using(var proxy = new Proxy())
{
proxy.Process().ContinueWith(result => Processed(result), TaskCreationOptions.None);
}
}