//导入文件线程函数
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)这个方法放到什么地方可以让信息显示出来呢?
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)这个方法放到什么地方可以让信息显示出来呢?
{
ImportFileThread = new Thread(new ThreadStart(ImportFileThreadProc));
ImportFileThread.Start();
ImportFileThread.Join();
showInfo(int id);
}这样?
private void ImportFileThreadProc(传个委托 weituo)
{
ImportExcelPerson IEP = new ImportExcelPerson();//一个类,专门用于导入Access数据库的
IEP.UnitID = this.ID;
IEP.fileName = fileName;
IEP.ExcelToAccess();//导入方法
执行这个委托....
}
数据处理完毕之后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;
}
thread.Join();让主线程处于等待状态直到thread执行完,
另外就是用异步回调的方式~