我正在从事的项目在服务器端使用WCF服务(代码在同一项目中)。我想通过编写一个消费该服务的PCL来扩展它,并希望使用Async/Await模式实现调用。
由于PCL最初不支持Async/Await,因此我通过Nuget向项目添加了BCL.Async包。但是,每当我尝试生成代理时,无法选择基于任务的异步客户端即无法生成。在PCL中似乎也无法通过ChannelFactory手动添加代理。
我的当前方法是生成代理并复制引用类,然后使用TPL提供的Task包装器自己编写async/await模式。但是有没有更简单的方法?如何直接使用async/await模式手动编写包装器而不生成具有相同效果的多个async模式?
由于PCL最初不支持Async/Await,因此我通过Nuget向项目添加了BCL.Async包。但是,每当我尝试生成代理时,无法选择基于任务的异步客户端即无法生成。在PCL中似乎也无法通过ChannelFactory手动添加代理。
我的当前方法是生成代理并复制引用类,然后使用TPL提供的Task包装器自己编写async/await模式。但是有没有更简单的方法?如何直接使用async/await模式手动编写包装器而不生成具有相同效果的多个async模式?
Task.Run
来“包装”你的WCF调用。这样做并不能实现真正的无线程异步,而如果你确实在嵌入式设备上工作,这将会产生巨大的影响。但是你可以使用Task.Factory.FromAsync(BeginXXX,EndXXX)
方法……这样可以正确地工作。 - Aron