日期:2014-05-18  浏览次数:20870 次

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 五百秒,这个方法要这么长时间才可以完成。
而且你的代码应该是客户端代码,就是说在这个时间段内,即使一个客户端点击,我估计也是会做这么长时间,会有假使状态,因为不是单独的线程去做这个事情的。