是否有可能在不阻塞工作线程的情况下延迟WCF服务响应

时间:2012-03-20 08:22:42

标签: multithreading wcf iis c#-4.0

是的,这听起来很不合理,但我有实际要求延迟WCF服务的响应至少七秒钟。现在使用System.Threading.Thread.Sleep()完成此操作,据说这是阻塞。因此,我想找到一个解决方案,让工作线程可用于其他请求。我也试过System.Timer,结果也是阻塞。

我知道发送请求的可能性,传达等待客户端的时间并在时间过后执行第二个请求。但这需要验证等待的时间,存储和重新发送各种数据并验证它没有改变。如果真的有必要,我想先调查一下。

3 个答案:

答案 0 :(得分:0)

只要客户端期望进行同步调用,就会一直坚持一个线程,直到处理完请求并返回响应为止。您可以尝试异常的黑客攻击,例如实现IInstanceProvider或创建操作行为来处理所需的时间延迟,但最后,您仍然坚持使用线程。

答案 1 :(得分:0)

我不确定我是否正确理解了这个问题,我假设您不想阻止该服务,并且您希望允许多个客户端同时访问该服务。

该服务的并发设置是什么?您可能需要查看this articleMSDN article以了解有关该主题的更多信息。

答案 2 :(得分:0)

老问题,但是如果有人需要这种(奇怪的)可能性......

至于我,它适用于属性

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
                 ConcurrencyMode = ConcurrencyMode.Multiple)]

关于服务类和

Thread.Sleep(10000);
在方法返回之前

;