读书人

WCF 被阻塞了 怎么处理 有代码

发布时间: 2012-05-30 20:20:04 作者: rapoo

WCF 被阻塞了 怎么办 求救,有代码


private Chat.ChatClient s;

private void Form1_Load(object sender, EventArgs e)
{

s = new Chat.ChatClient();

s.Join(Guid.NewGuid().ToString());

}
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5000; i++)
{
s.InsertMessage(1, 1, "", DateTime.Now);
Thread.Sleep(100);
}
}





开启两个客户端 同时执行 private void button2_Click(object sender, EventArgs e)

触发契约:InsertMessage

就好像假死了一样,over在那里了!!!! 如果这样的话 那几台客户端同事对某契约操作 不是 死定了!!!

PS:一个客户端一点问题都没

[解决办法]
需要看看InsertMessage的内容有没有线程同步的东西。

WCF的InstanceContextMode 别是Single的同事Concurrency 别是Single,基本就没事。

具体参考:
http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-and
[解决办法]
5000*100 五百秒,这个方法要这么长时间才可以完成。
而且你的代码应该是客户端代码,就是说在这个时间段内,即使一个客户端点击,我估计也是会做这么长时间,会有假使状态,因为不是单独的线程去做这个事情的。

读书人网 >C#

热点推荐