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

多线程问题,如何关闭其他调用同一方法的其他线程?
说法可能有些问题,例如方法   A();A()地执行时间为1分钟.
点下Button调用一次A(),再1分钟内点个十次八次的,就会出现在同一个时间同时有很多个线程在调用A()。我想只在最近的线程里执行A(),而取消其他线程的操作该如何做?

在单线程里做,不停的点Button   一直死在那里,过一会儿才可以继续,
下面的代码是单线程里做

Thread   myThread;

                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        if   (myThread   !=   null)
                        {
                                if   ((myThread.ThreadState   &   (ThreadState.Stopped   |   ThreadState.Unstarted))   ==   0)
                                {
                                        myThread.Abort();
                                        this.listBox1.Items.Add( "Cancel   one   threassssssssssssssssssssssssssssssssssssssssssssssssssssss ");
                                }
                        }
                        myThread   =   new   Thread(new   ThreadStart(DoSomething));
                        myThread.Start();
                }

                private   delegate   void   ItemAddHandle(int   i);
                       
                private   void   DoSomething()
                {
                        listBox1.BeginInvoke(new   ItemAddHandle(ShowStartInfo),   new   object[]   {   1   });                          

                        for   (int   i   =   0;   i   <   10000;   i++)
                        {                                
                                listBox1.BeginInvoke(new   ItemAddHandle(DoItemAdd),   new   object[]   {   i});                              
                        }
            &nbs