- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何在子线程中操作窗体上的控件
如何在子线程中操作窗体上的控件
如何在子线程中操作窗体上的控件 收藏
一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作。
现在用一个用线程控制的进程条来说明,大致的步骤如下:
1. 创建Invoke函数,大致如下:
/// summary
/// Delegate function to be invoked by main thread
/// /summary
private void InvokeFun()
{
if( prgBar.Value 100 )
prgBar.Value = prgBar.Value + 1;
}
2. 子线程入口函数:
/// summary
/// Thread function interface
/// /summary
private void ThreadFun()
{
//Create invoke method by specific function
MethodInvoker mi = new MethodInvoker( this.InvokeFun );
for( int i = 0; i 100; i++ )
{
this.BeginInvoke( mi );
Thread.Sleep( 100 );
}
}
3. 创建子线程:
Thread thdProcess = new Thread( new ThreadStart( ThreadFun ) );
thdProcess.Start();
备注:
using System.Threading;
private System.Windows.Forms.ProgressBar prgBar;
运行后的效果如下图所示:
本文来自CSDN博客,转载请标明出处:/knight94/archive/2006/03/16/626584.aspx
**************************************************************************
knight94 发表于2006年4月21日 9:21:00 IP:举报回复删除
首先,你在创建这个类的对象时,要把当前的窗体对象传进去(为了到时候能通过它调用其的方法)。
然后把
Thread thdProcess = new Thread( new ThreadStart( ThreadFun ) );
改成
Thread thdProcess = new Thread( new ThreadStart( yourObj.ThreadFun ) );
即可。User 发表于2006年4月29日 16:03:00 IP:举报回复删除
我想实现批量注册用户的功能,首先在文本域里录入用户信息(按照约定的规则),然后执行。
现在我希望在界面上有一个文本域滚动提示每个用户导入是否成功,失败的原因,另外可以有一个滚动条显示进度。
麻烦 knight94 ,指教。knight94 发表于2006年5月1日 13:17:00 IP:举报回复删除
to User
对于你的问题,参看我的例子就可以了,我的例子是如何滚动进度条,那么你可以在上面的基础上进行扩展,而且Invoke调用方法,也可以加参数,例如:
-------in your form class ------
public void ShowText( string sData )
{
//Handle sData here
}
--------in thread fun ----------
MethodInvoker mi = new MethodInvoker( this.ShowText );
this.BeginInvoke( mi, n
您可能关注的文档
最近下载
- 登革热诊疗方案(2024年版).pdf VIP
- 人教版PEP小学英语六年级上册第一单元测试卷.pdf VIP
- 《装配式装修标准化模块化设计 》课件——模块七:装配式装修卫浴部品体系设计.ppt VIP
- 《全装饰住宅部品集成技术》课件——模块六:集成厨房部品体系设计装配式装修.pptx VIP
- 破晓剧本(红色剧目).docx VIP
- 《装配式装修标准化模块化设计 》课件——模块六:集成厨房部品体系设计装配式装修.ppt VIP
- 国际投资(第六版)课件 SolMcL_6e_ch10.ppt VIP
- 《装配式建筑装饰装修》习题-04收纳系统设计.docx VIP
- 装配式建筑装饰装修-标准化.pptx VIP
- 常用电子管参数及脚位5.doc VIP
文档评论(0)