架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8043|回复: 0

[资料] Cross-thread operation not valid: Control 'txtresult' accessed from a threa...

[复制链接]
发表于 2015-12-14 15:27:31 | 显示全部楼层 |阅读模式

我们在做窗体应用程序的时候,有时候穾获取当前窗体的信息,或者调用其他窗体的控件。

这里我介绍两种方法来实现。


当我们需要在窗体中调用其他窗体的控件时,我们可以用控件.CheckForIllegaCrossThreadCalls=false;

例如:Button.CheckForIllegalCrossThreadCalls=false;

当然我们也可以让整个窗体可以跨线程访问

Form.CheckForIllegalCrossThreadCalls=false;

这样我们就可以在其他窗体中访问这个窗体的控件或者属性。

这样也许不是最安全的方法,有的时候调试会给我们报错。


这里我再介绍一种可以跨线程访问的方法。

Invoke   跳到窗体线程上去执行委托上的函数


首先我们需要声明一个委托,

public delegate void DelSetTime(object str);

然后我们只需要准备好需要执行的函数,

public void setTime(object str);

下面我们就可以将委托放到窗体的线程上去执行

Delegate d=new DelsetTime(setTime);

this.Invoke(d,Datetime.Now.ToString());

这样我们就可以实现跨线程访问了。


每一个窗体都有一个窗体线程,这个线程主要是完成窗体的绘制,及窗体控件

上的事件代码的处理,这个线程我们称它为窗体线程或者主线程。

很多时候我们需要为窗体添加线程来处理数据,这时我们就可以这些新创建的线程设置为后台线程,当窗体关闭时,这些后台

线程也会跟着结束。

ThreadStart ths=new ThreadStart(Demo);

Thread th= new Thread(ths);

th.Start();

th.IsBackground=true;


原文:http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html     






上一篇:二位字符数组的输入,输出时排序
下一篇:【ios开发系列教程夏天发布】iPhone教程
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-3-28 16:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表