◆请教一个简单的多线程的问题◆ 想在后台执行一个方法返回一个DataTable然后在把这个datatable绑定到GridView上。用backgroundWorker如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 记住一点,访问界面时候要调用界面的Invoke或BeginInvoke方式同步ui线程。其他的就是照一般函数写就行。 private void button5_Click(object sender, EventArgs e){ BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { DataTable table = new DataTable(); //准备DataTable //... //更新ui this.Invoke((EventHandler)delegate { this.dataGridView1.DataSource = table; }); }; bw.RunWorkerAsync();} 简单点的话大概这样Thread thread = new ( delegate { //datable操作 //绑定,非UI线程不能直接访问控件,用Invoke this.Invoke(new Action<DataTable>(DataBind), new object[] { table}); });thread.start(): private void DataBind(DataTable table) { dataGridView1.DataSource = table; } Backgroundworker worker=new Backgroundworker();worker.RunWorkerAsync();worker.DoWork+=new DoWorkEventHandler(backgroundWorker1_DoWork);private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){ //后台执行事务 e.Resoult//返回执行结果} private void button5_Click(object sender, EventArgs e){ BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { DataTable table = new DataTable(); //准备DataTable //... //更新ui this.Invoke((EventHandler)delegate { this.dataGridView1.DataSource = table; }); }; bw.RunWorkerAsync();} 继承中改写的方法如何引用基类中被封装的字段? c#如何判断一个共享的wav文件正在被使用?有办法么 C# 拆分字符串 遍历整个页面怎么样清空呀? 面向对象设计 XML与DataSet的问题(最后70分,全送了) panel的小问题 一个超级小白问题 C# 图片动态切换问题,程序死掉了不知为何? 为了省几百块注册费,想自己开发一个从GOOGLE上面查找电子邮件的软件。 richtextbox之查找内容并定位 c#或者VC中如何调用word里面的组件
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += delegate
{
DataTable table = new DataTable();
//准备DataTable
//...
//更新ui
this.Invoke((EventHandler)delegate
{
this.dataGridView1.DataSource = table;
});
};
bw.RunWorkerAsync();
}
delegate
{
//datable操作
//绑定,非UI线程不能直接访问控件,用Invoke
this.Invoke(new Action<DataTable>(DataBind), new object[] { table});
});
thread.start(): private void DataBind(DataTable table)
{
dataGridView1.DataSource = table;
}
worker.RunWorkerAsync();
worker.DoWork+=new DoWorkEventHandler(backgroundWorker1_DoWork);private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//后台执行事务
e.Resoult//返回执行结果
}
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += delegate
{
DataTable table = new DataTable();
//准备DataTable
//...
//更新ui
this.Invoke((EventHandler)delegate
{
this.dataGridView1.DataSource = table;
});
};
bw.RunWorkerAsync();
}