none
WCF 被堵塞了 怎么办 RRS feed

  • 问题

  •        

    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在那里了!!!! 如果这样的话 那几台客户端同事对某契约操作 不是 死定了!!!


    2012年5月28日 11:21

答案

  • 你是指你的winform程序假死吗?看你的代码应该不是wcf的问题,你在button2_click事件中循环了5000次,每次还Sleep了一下,所以UI线程一直在忙,不是调用InsertMessage方法就是在Sleep,所以UI线程没有空暇去响应界面,你就会感觉程序没有反应。你可以开启一个线程去执行button2_click中的代码,或者采用异步的方式去调用wcf服务。这样,可以让UI线程空出来,响应界面。


    AndersTan

    2012年5月29日 1:51

全部回复