是的,这听起来很不合理,但我有实际要求延迟WCF服务的响应至少七秒钟。现在使用System.Threading.Thread.Sleep()
完成此操作,据说这是阻塞。因此,我想找到一个解决方案,让工作线程可用于其他请求。我也试过System.Timer
,结果也是阻塞。
我知道发送请求的可能性,传达等待客户端的时间并在时间过后执行第二个请求。但这需要验证等待的时间,存储和重新发送各种数据并验证它没有改变。如果真的有必要,我想先调查一下。
答案 0 :(得分:0)
只要客户端期望进行同步调用,就会一直坚持一个线程,直到处理完请求并返回响应为止。您可以尝试异常的黑客攻击,例如实现IInstanceProvider或创建操作行为来处理所需的时间延迟,但最后,您仍然坚持使用线程。
答案 1 :(得分:0)
我不确定我是否正确理解了这个问题,我假设您不想阻止该服务,并且您希望允许多个客户端同时访问该服务。
该服务的并发设置是什么?您可能需要查看this article或MSDN article以了解有关该主题的更多信息。
答案 2 :(得分:0)
老问题,但是如果有人需要这种(奇怪的)可能性......
至于我,它适用于属性
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple)]
关于服务类和
Thread.Sleep(10000);
在方法返回之前;