要实现的功能很简单 就是在点击某一按钮的时候执行一个多线程(可多次点击)
private void button17_Click(object sender, System.EventArgs e)
{
Thread thread = new Thread(new ThreadStart(DoSynchronous));
thread.Start();
}第一次点击完全正常 但第二次点击就会提示 未将对象引用设置到对象实例
经过跟踪 第二次点击时之前那次线程已经是stopped状态但不论我把thread 定义成全局或是局部都有这个问题 原因不明 请大家帮忙指点下

解决方案 »

  1.   

    DoSynchronous 这个函数有问题吧?
    里面引用了全局变量之类的东西么
      

  2.   

    我跟踪了 程序在还没有第二次执行DoSynchronous之前就出错了
      

  3.   

    感觉没啥问题,把DoSynchronous代码看看
      

  4.   

    查了下 是 DoSynchronous 的问题 但是 还是有点小问题不能完美解决...原来程序是这样的private DataGrid dg=new DataGrid();
    private void button17_Click(object sender, System.EventArgs e)
    {
             datatable=....
             dg.DataSource=datatable;
    Thread thread = new Thread(new ThreadStart(DoSynchronous));
    thread.Start();
    }private void DoSynchronous()
    {
            DataTable dt=(DataTable)dg.DataSource;
            while (dt.rows.Count>0)
            {
                    ...
                    dt.rows.removeat(0);
            }
    }现在改成
    private DataGrid dg=new DataGrid();
    private void button17_Click(object sender, System.EventArgs e)
    {
    Thread thread = new Thread(new ThreadStart(DoSynchronous));
    thread.Start();
    }private void DoSynchronous()
    {
            dt=....
            while (dt.rows.Count>0)
            {
                    ...
                    dt.rows.removeat(0);
            }
    }
    后可以正常运行
    但是 无法将dt的值用dg来显示了 
    dg.DataSource=dt;提示无法将一个线程的控件当作另一个线程的父控件