是否支持在.NET 4.5中使用异步方法的ChannelFactory?

时间:2013-05-08 01:57:37

标签: wcf async-await channelfactory

我正在将我们的WCF服务转换为使用异步编程。正如所料,界面如下所示:

public interface IFoo
{
    Task<string> DoSomething(string request);
}

在客户端,我不是从Visual Studio创建服务引用。由于我拥有客户端和服务器,我只是与客户端共享接口,然后我创建(和缓存)一个ChannelFactory。要异步调用该方法,我使用预期的语法:

IFoo clientChannel = channelFactory.CreateChannel();
bool result = await clientChannel.DoSomething("Hello World");

我的问题是:ChannelFactory生成的IClientChannel是否真的使用了下面的异步功能?我的意思是,我可以确定没有线程阻塞等待服务器响应吗?

1 个答案:

答案 0 :(得分:0)

查看ClientBase代码,异步调用全部归结为:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Channels/ServiceChannel.cs,0353de22100bb396

似乎没有任何理由认为该线程会阻止等待网络响应。