【发布时间】:2019-09-25 21:22:20
【问题描述】:
花了一些时间在谷歌上搜索,但没有找到明确的答案,也不知道如何通过测试来证明它(欢迎提出建议)。
我们有一个 WCF 服务,该服务带有一个循环等待特定事件发生的方法。在循环中,它使用 Thread.Sleep 等待 100 毫秒,这在服务中是很长的(我们想重新设计它。在服务中睡眠不是一个好主意吗?)。
我想通过使方法异步并改用 Task.Delay 来提高吞吐量,而不更改服务合同。在使方法异步并重新生成合同类之后,合同签名似乎是完整的。我还可以看到生成的代码现在有一个状态机,似乎表明它现在是异步的。
我的问题是,即使我以同步方式调用异步服务方法,我是否会从线程可用于其他工作中受益?框架会等待服务方法吗?
Br
【问题讨论】:
-
方法的调用者是服务的客户端。这不是内部调用。所以框架处理方法的调用。我想知道这是否会通过 Await 来完成(从而在我的代码等待某些东西时释放线程以进行其他服务调用)。
-
服务器和客户端之间不发送任务。因此,服务器不关心请求是否由具有任务的客户端处理。服务器所知道的关于客户端的所有信息都是请求负载,而且它必须发送回响应负载。
-
好吧,这似乎是合理的。因此,异步方法的服务器端优势与客户端使用服务的方式无关?
标签: c# wcf async-await