怎样判断线程是否执行完

解决方案 »

  1.   

    if(yourThread==null)
      MessageBox.Show("线程执行玩了!");
    else
      MessageBox.Show("线程正在运行……");
      

  2.   

    设置一个变量,在线程执行结束时给其赋值就行了
    bool bState = falseyouThread()
    {
       ...
       bState = true
    }if (bState)  线程结束
      

  3.   

    上楼的方法可行,也可以考虑Join()
      

  4.   

    用  isAlive 也可以啊
      

  5.   

    委托回调:详见MSDN:
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxadvance/html/52b32222-e185-4f42-91a7-eaca65c0ab6d.htm如果没装MSDN,给你贴个MSDN上的例子,如下:
      

  6.   

    下面的示例演示了一个从线程中检索数据的回调方法。包含数据和线程方法的类的构造函数也接受代表回调方法的委托;在线程方法结束前,它调用该回调委托。
    using System;
    using System.Threading;// The ThreadWithState class contains the information needed for
    // a task, the method that executes the task, and a delegate
    // to call when the task is complete.
    //
    public class ThreadWithState {
        // State information used in the task.
        private string boilerplate;
        private int value;    // Delegate used to execute the callback method when the
        // task is complete.
        private ExampleCallback callback;    // The constructor obtains the state information and the
        // callback delegate.
        public ThreadWithState(string text, int number, 
            ExampleCallback callbackDelegate) 
        {
            boilerplate = text;
            value = number;
            callback = callbackDelegate;
        }
        
        // The thread procedure performs the task, such as
        // formatting and printing a document, and then invokes
        // the callback delegate with the number of lines printed.
        public void ThreadProc() 
        {
            Console.WriteLine(boilerplate, value);
            if (callback != null)
                callback(1);
        }
    }// Delegate that defines the signature for the callback method.
    //
    public delegate void ExampleCallback(int lineCount);// Entry point for the example.
    //
    public class Example 
    {
        public static void Main() 
        {
            // Supply the state information required by the task.
            ThreadWithState tws = new ThreadWithState(
                "This report displays the number {0}.",
                42,
                new ExampleCallback(ResultCallback)
            );        Thread t = new Thread(new ThreadStart(tws.ThreadProc));
            t.Start();
            Console.WriteLine("Main thread does some work, then waits.");
            t.Join();
            Console.WriteLine(
                "Independent task has completed; main thread ends."); 
        }    // The callback method must match the signature of the
        // callback delegate.
        //
        public static void ResultCallback(int lineCount) 
        {
            Console.WriteLine(
                "Independent task printed {0} lines.", lineCount);
        }
    }