首页 新闻 会员 周边

研究了好多天都搞不懂跨线程获取(这里指的是读取,而不是修改)form窗体及窗体上控件的属性。 有人说用Invok

0
[已解决问题] 解决于 2013-11-20 22:55

研究了好多天都搞不懂跨线程获取(这里指的是读取,而不是修改)form窗体及窗体上控件的属性。
有人说用Invoke,但我这两天一直搞不明白,可不可以写点读取的代码我看看。
点注是读取,不是修改。

yeopp的主页 yeopp | 菜鸟二级 | 园豆:319
提问于:2013-11-20 21:39
< >
分享
最佳答案
0

这个园子里有很多文章了

MSDN上也有例子

自定义线程安全访问UI线程控件

http://msdn.microsoft.com/zh-cn/library/a1hetckb(v=vs.110).aspx

 //自定义线程
this
.threadStart = new System.Threading.ParameterizedThreadStart(this.GetData); this.thread = new System.Threading.Thread(threadStart); this.thread.Start(); //线程函数 public void GetData() { DataTable Result= ExcuteSql(); SaseThreadProc(Result); }
//在自定义线程内安全把数据赋值给主窗体的列表控件
private void SaseThreadProc(DataTable res) { if (this.DataGridViewControl.InvokeRequired) { SetDataTableCallback stdv = new SetDataTableCallback(SaseThreadProc); this.Invoke(stdv, new object[] { res}); } else { this.DataGridViewControl.DataSource = res; } } //这里的DataGridViewControl就是主窗口的DataGridView控件

这是自己一个项目用的用法

读取就是一样的如this.DataGridViewControl.backcolor=red。手机上得,就随意下啦

奖励园豆:5
大芝麻 | 初学一级 |园豆:4 | 2013-11-20 22:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册