//导入文件线程函数
        private void ImportFileThreadProc()
        {
            ImportExcelPerson IEP = new ImportExcelPerson();//一个类,专门用于导入Access数据库的
            IEP.UnitID = this.ID;
            IEP.fileName = fileName;
            IEP.ExcelToAccess();//导入方法
        }
//导入按钮
private void buttonImport_Click(object sender, EventArgs e)
        {
            ImportFileThread = new Thread(new ThreadStart(ImportFileThreadProc));
            ImportFileThread.Start();
        }
另外呢,我还有个方法是showInfo(int id);
我想要的效果是这样的,当线程执行完后,怎么样可以刷新窗体,让刚才导入的信息在窗体控件上显示出来,还需要再写方法吗或者把showInfo(int id)这个方法放到什么地方可以让信息显示出来呢?

解决方案 »

  1.   

    private void buttonImport_Click(object sender, EventArgs e)
      {
      ImportFileThread = new Thread(new ThreadStart(ImportFileThreadProc));
      ImportFileThread.Start();
      
      ImportFileThread.Join();
      showInfo(int id);
      
    }这样?
      

  2.   


    private void ImportFileThreadProc(传个委托 weituo)
      {
      ImportExcelPerson IEP = new ImportExcelPerson();//一个类,专门用于导入Access数据库的
      IEP.UnitID = this.ID;
      IEP.fileName = fileName;
      IEP.ExcelToAccess();//导入方法
      执行这个委托....
      }
      

  3.   

    下面的代码应该对你有用:窗体上就放一个button和一个label,点击button后处理后台数据,然后在label上显示“loading...”,
       数据处理完毕之后label显示“完成”。 private delegate void TestDelegate(string s);        private void button1_Click(object sender, EventArgs e)
            {
                label1.Text = "Loading...";
                Thread thd = new Thread(st);   //st是线线程调用的方法,也就是你处理数据的方法
                thd.Start();
            }        private void st()
            {
                Thread.Sleep(2000); //为了测试,线程停2秒,当然可以在这之前写你处理数据的代码            //因为线程里面不能访问控件,所以用Invoke调用ThreadEndCallback方法
                TestDelegate myDelegate = this.ThreadEndCallback;
                this.Invoke(myDelegate, "Loading完毕!"); 
            }        private void ThreadEndCallback(string str) //线程回调方法
            {
                label1.Text = str;
            }
      

  4.   

    主要就两种方式:
    thread.Join();让主线程处于等待状态直到thread执行完,
    另外就是用异步回调的方式~