【发布时间】:2018-03-11 16:25:27
【问题描述】:
我有一个使用 NetTcpBinding 的自托管 WCF 服务、.NET 框架 4.5.2,以及一个远程使用该服务的 WPF 客户端(也是 4.5.2)。到目前为止,我所有的 OperationContracts 都是同步的。
我想向 WCF 服务添加一个异步 OperationContract,但从客户端同步调用它(这样做的原因是我可以在服务方法中使用 async/await)。
问题:此解决方案不使用服务引用或 SvcUtil。我们正在使用共享库模式,其中服务合同在客户端和服务器都引用的共享库中定义。客户端代理是使用 ChannelFactory.CreateChannel 创建的。
这是否可行?我需要将 async/await 排除在客户端之外,但在服务器方法中使用它。如果不可能,我可以让 OperationContract 同步,但将其视为 Main 方法并使用 GetAwaiter().GetResult(),还是会遇到死锁问题?
【问题讨论】:
标签: c# wpf wcf asynchronous