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

一个多线程的问题.请高手帮忙回答.
我点了button1开始一个线程.
按了这个按钮后我想按第二个按钮就按不动了..直到线程运行完了..这是为什么啊.
请高手指点一二
下面是代码:
                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                      Thread   threadParse   =   new   Thread(new   ThreadStart(RunParser));
                      threadParse.Start();
                }
                private   void   button2_Click(object   sender,   EventArgs   e)
                {
                        MessageBox.Show( "点了第二个按钮 ");
                }
                delegate   void   GetRunParserHandle();
                void   RunParser()
                {
                        if   (this.InvokeRequired)
                        {
                                GetRunParserHandle   rph   =
                                                                        new   GetRunParserHandle(this.RunParser);
                                this.Invoke(rph);
                                return;
                        }
                        else
                        {
                                Thread.Sleep(5000);
                                textBox1.Text   =   "5秒过了 ";
                        }
                }


------解决方案--------------------
你只开了一个线程
------解决方案--------------------
为什么那个委托还要调用RunParser()呢?必须要这样用吗?

------解决方案--------------------
你可以调用其他方法来处理就可以,没必调用自己,你试一下调用其他的方法看看,那就不可卡住不动的.
还有,this.Invoke();是同步调用
this.BeginInvoke();就是异步了
------解决方案--------------------
你怎么又是线程又是INVOKE的同时来调它,看得我有点迷糊