为每个会话C#创建虚拟队列

时间:2015-07-08 13:56:24

标签: c# wcf asynchronous

我想在异步但按顺序处理请求。我想为每个会话创建一个虚拟队列意味着一个用户的所有请求都在一个队列中处理,而另一个用户在另一个队列中请求。这是两个用户并行处理的请求,但是应该在一定程度上处理一个用户的请求。

我该如何实现?请建议。

提前致谢。

1 个答案:

答案 0 :(得分:3)

假设用户直接连接到您的服务而不是通过代理,您应该定义以下服务:

[ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,    
  )]

InstanceContextMode=InstanceContextMode.PerSession - 这意味着每个客户"得到"他自己的工作线程用于整个会话的服务实例,因此多个客户端有多个线程。 ConcurrencyMode=ConcurrencyMode.Single - 表示客户端一次只能拨打一个电话,以便按顺序处理呼叫。