WCF 多客户端
WCF Multiple Clients
我目前正在开发即时通讯应用程序。一旦客户端连接到服务器并发送消息,它就可以正常工作。第二个客户端连接,两个客户端聊天,一切正常。当 2 个客户端同时发送消息时,问题就来了。然后两个客户端都冻结(在调试中我超时)但是消息在聊天中对其他客户端显示正常。
这是服务器的行为:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
app.config 行为:
<behavior name="Behave">
<serviceThrottling maxConcurrentCalls="100"
maxConcurrentSessions="100"
maxConcurrentInstances="100" />
</behavior>
我是 WCF 的新手,我不确定我是否完全理解它。我试过改变周围的东西,但似乎没有任何帮助。任何形式的帮助将不胜感激。
如果需要更多代码,我会根据要求提供。
我认为你应该调用后台线程,而不是同一个线程。
这是交易:
- 你应该定义
private SynchronizationContext _SyncContext;
2.and 在构造函数中:
_SyncContext = SynchronizationContext .Current;
3。并在您的客户端将此代码添加到方法事件处理程序中。
Thread thread = new Thread(()=>
{
SendOrPostCallBack callback = new SendOrPostCallback(arg=>
{
** your logic here need to be marshalled**
}
_SyncContext.Send(callback, null);
}
兄弟,告诉我它是否对你有用。快乐编码。
我目前正在开发即时通讯应用程序。一旦客户端连接到服务器并发送消息,它就可以正常工作。第二个客户端连接,两个客户端聊天,一切正常。当 2 个客户端同时发送消息时,问题就来了。然后两个客户端都冻结(在调试中我超时)但是消息在聊天中对其他客户端显示正常。
这是服务器的行为:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
app.config 行为:
<behavior name="Behave">
<serviceThrottling maxConcurrentCalls="100"
maxConcurrentSessions="100"
maxConcurrentInstances="100" />
</behavior>
我是 WCF 的新手,我不确定我是否完全理解它。我试过改变周围的东西,但似乎没有任何帮助。任何形式的帮助将不胜感激。 如果需要更多代码,我会根据要求提供。
我认为你应该调用后台线程,而不是同一个线程。 这是交易:
- 你应该定义
private SynchronizationContext _SyncContext;
2.and 在构造函数中:
_SyncContext = SynchronizationContext .Current;
3。并在您的客户端将此代码添加到方法事件处理程序中。
Thread thread = new Thread(()=>
{
SendOrPostCallBack callback = new SendOrPostCallback(arg=>
{
** your logic here need to be marshalled**
}
_SyncContext.Send(callback, null);
}
兄弟,告诉我它是否对你有用。快乐编码。