由于线程里不可用调用UI线程里的东西,而且,延时的东西我想放在一个线程中处理,我的程序又需要按这个顺序运行  用代码表示说明如下:(即在isover进程结束后 调用isend 方法)
        Thread isover;
        private void Form1_Load(object sender, EventArgs e)
        {
            isover = new Thread(time);
            isover.Start();
        }
        private void time()
        {
            for (int i = 0; i < 999999999; i++)
            { }
            return;
        }
        private void isend()
        {
            MessageBox.Show("执行结束!");
        }

解决方案 »

  1.   

    应该有必要开启一个新的线程去监视isover线程是否结束,
    一来 可以解决线程isover因为执行时间过长导致超时的问题
    而来 也能通过监测isover线程的状态来实现线程结束再做其他处理的问题
      

  2.   

    this.Invoke(new MethodInvoker(
                    delegate
                    {
                        this.isend();
                    }));放在time函数结束位置
      

  3.   

                isover = new Thread(() =>
                {
                    try
                    {
                        time();
                    }
                    finally { isend(); }
                });
                isover.Start();
      

  4.   

    isover进程的结尾调用下isend()方法不就好了么?
      

  5.   

      if (InvokeRequired)
                {
                    Invoke(new MethodInvoker()
    {
    赋值
    })
                  
                }
      

  6.   

    呵呵 本来我是学asp.net网页的 有时候有兴趣写点小工具,winform又不太熟,多谢网页们的帮助!呵呵