如何应用任务异步模式和WCF';渠道工厂<;TChannel>;?

如何应用任务异步模式和WCF';渠道工厂<;TChannel>;?,wcf,asynchronous,task,channelfactory,Wcf,Asynchronous,Task,Channelfactory,我们在2008年在.NET 3.5(现在在.NET 4.0下重新编译)上构建了一个健壮的WCF客户端,它通过NET.tcp绑定与我们自己的WCF服务进行通信。健壮的客户端使用ChannelFactory()生成服务代理,我们当前通过该代理对服务进行同步调用。我们从每次通话中得到结果;我们没有单程电话 我们正在迁移到.NET 4.5/C#5,并希望使用async/await/TAP使客户端异步。如何以一种干净的代码和良好的运行时性能的方式最好地做到这一点 (我已经看过了关于这个主题的MS文档,但它

我们在2008年在.NET 3.5(现在在.NET 4.0下重新编译)上构建了一个健壮的WCF客户端,它通过NET.tcp绑定与我们自己的WCF服务进行通信。健壮的客户端使用ChannelFactory()生成服务代理,我们当前通过该代理对服务进行同步调用。我们从每次通话中得到结果;我们没有单程电话

我们正在迁移到.NET 4.5/C#5,并希望使用async/await/TAP使客户端异步。如何以一种干净的代码和良好的运行时性能的方式最好地做到这一点

(我已经看过了关于这个主题的MS文档,但它总是谈到运行svcutil。我们不使用svcutil;我们直接使用ChannelFactory。另外:在.NET 4.5下使用通道工厂异步调用操作的MS文档自.NET 3.0以来没有变化。似乎ChannelFactory还没有接受新的异步。)

您可以使用将现有APM(
Begin*
/
End*
)端点包装到TAP ready
任务中

您可能会发现我的帮助,它显示了如何将TAP与VS2012之前的svcutil一起使用。

您看到了吗?
我举了一个等待的
[OperationContract]
返回
任务的例子

谢谢Stephen。在根据你的答案搜索信息之后,在阅读了你的帖子之后,我认为这是最好的了。我很惊讶今天的ChannelFactory仍然希望您使用APM模式;我会查一查。