我添加了一个WCF服务引用到我的.NET 4.5应用程序,使用默认的“生成基于任务的操作”选项下的“允许生成异步操作“。我从我自己的异步方法调用服务,有点像这样:使用.NET 4.5基于任务的异步操作的WCF服务客户端,等待永远不会返回
public async Task<SomeData> GetDataAsync()
{
var client = new MyServiceClient();
var result = await client.GetSomeDataAsync();
return result;
}
的await client.GetSomeDataAsync()
永远不会完成(在return语句断点从未被击中),我没有得到一个超时或任何其他错误,不会引发异常,什么都不是。 Fiddler显示客户端发送了请求,服务几乎立即响应了预期的数据,所以问题出现在围栏的一边。
如果我切换到同步版本而不是
var result = client.GetSomeData();
调用返回预期。
我在做什么错?
你怎么知道你的等待声明永远不会完成?在你的例子中,你只是返回结果。您可以尝试在await语句之后放置语句,以尝试访问result.Result属性以查看是否存在任何内容。 – jensendp
return语句永远不会被执行。我设置了一个断点并试图通过等待,它从未继续。 –
你的调用代码刚开始执行任务,你没有显示你如何观察其结果。这很重要。 – Servy