在click事件里,进了线程,出线程就直接结束了,thread.start()后面的代码就不执行了,而且也没报错,这是为什么,大家有没有遇到过这种情况?
手机发贴不大舒服,代码没放上来,大家帮忙看看,谢谢了。

解决方案 »

  1.   

    public text()
            {
                
                InitializeComponent();
                dFun1 = new dFun(SetValue);
            }        //线程
            delegate void dFun(int v);
            dFun dFun1;
            private Thread thread;        private void button1_Click(object sender, EventArgs e)
            {
                PublicData.pubvar.linesin.AddRange(richTextBox1.Lines);
                richTextBox1.Clear();
                thread = new Thread(new ThreadStart(fun));
                thread.Start();//有问题,直接过了
                for (int i = 0; i < PublicData.pubvar.linesout.Count; i++)
                {
                    richTextBox1.AppendText(PublicData.pubvar.linesout[i] + "\r\n");
                }
             }
            public void fun()
            {
                    PublicData.pubvar.v = 10;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    ToList tl = new ToList();
                    Translate tr = new Translate();
                    Display dp = new Display();
                    tl.tolist();
                    PublicData.pubvar.v = 20;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    if (NetTest.IsConnectedToInternet())
                    {
                        tr.internettranslate();
                    }
                    else
                    {
                        tr.localtranslate();
                    }
                    dp.display();
                    //PublicData.pubvar.v = 90;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    thread.Abort();
            }
            private void SetValue(int v)//int v
            {
                progressBar1.Value = PublicData.pubvar.v;
            }
      

  2.   

    public text()
            {
                
                InitializeComponent();
                dFun1 = new dFun(SetValue);
            }        //线程
            delegate void dFun(int v);
            dFun dFun1;
            private Thread thread;        private void button1_Click(object sender, EventArgs e)
            {
                PublicData.pubvar.linesin.AddRange(richTextBox1.Lines);
                richTextBox1.Clear();
                thread = new Thread(new ThreadStart(fun));
                thread.Start();//有问题,直接过了
                for (int i = 0; i < PublicData.pubvar.linesout.Count; i++)
                {
                    richTextBox1.AppendText(PublicData.pubvar.linesout[i] + "\r\n");
                }
             }
            public void fun()
            {
                    PublicData.pubvar.v = 10;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    ToList tl = new ToList();
                    Translate tr = new Translate();
                    Display dp = new Display();
                    tl.tolist();
                    PublicData.pubvar.v = 20;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    if (NetTest.IsConnectedToInternet())
                    {
                        tr.internettranslate();
                    }
                    else
                    {
                        tr.localtranslate();
                    }
                    dp.display();
                    //PublicData.pubvar.v = 90;
                    progressBar1.Invoke(dFun1, PublicData.pubvar.v);
                    thread.Abort();
            }
            private void SetValue(int v)//int v
            {
                progressBar1.Value = PublicData.pubvar.v;
            }