积极答复者
异步调用

问题
-
各路大侠,我在做实验的时候遇到了一个麻烦:
我写了一个函数 : public DataTable FindBooks(string bookName) ;
这个函数可以查询数据库中与上面那个 'bookName' 相似的书籍信息
不过书籍的数量有点多,如果不异步调用的话,主界面就卡卡的,所以呢!我的问题就出在这里了
我用一个 dataGridView 来显示信息
dataGridView1.DataSource=FindBooks( this.textBox1.Text ) ;
运行的时候报错: 线程间操作无效: 从不是创建控件“dataGridViewCheckByBookName”的线程访问它。
我要怎么写异步线程啊????
小弟新手,请帮忙!!!!!
答案
-
当然,你完全可以使用BackgroundWorker来做此事(自己可以参考:http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx)。
提示:按照你的写法,只要:
1)后台调用BackGroundworker的RunAsync()
2)在Do_Work事件中自行处理逻辑代码。
- 已建议为答案 Jason Dot WangModerator 2012年9月11日 7:03
- 已标记为答案 星空雏菊 2012年9月14日 8:06
全部回复
-
Action a = new Action(()=>{dataGridView1.DataSource=FindBooks( this.textBox1.Text) ;});
a.BeginInvoke(null);
直接Ctrl+F5运行程序。
- 已编辑 ThankfulHeartModerator 2012年9月9日 8:40
- 已建议为答案 Jason Dot WangModerator 2012年9月11日 7:03
-
当然,你完全可以使用BackgroundWorker来做此事(自己可以参考:http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx)。
提示:按照你的写法,只要:
1)后台调用BackGroundworker的RunAsync()
2)在Do_Work事件中自行处理逻辑代码。
- 已建议为答案 Jason Dot WangModerator 2012年9月11日 7:03
- 已标记为答案 星空雏菊 2012年9月14日 8:06