博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinForm中跨线程操作控件
阅读量:6546 次
发布时间:2019-06-24

本文共 860 字,大约阅读时间需要 2 分钟。

在WinForm编程时会遇到通过后台线程操作界面的情况,直接在后台线程执行的方法中直接操作控件会报错,这时候就要使用跨线程方式间接操作控件。下面是两种实现方式。
 
1、采用定义delegate的方式
private delegate void SetTextBoxValueDelegate(string value);private void SetTextBoxValue(string value){    if (this.txtInfo.InvokeRequired)//判断是否跨线程请求    {        SetTextBoxValueDelegate myDelegate = delegate(string text) { txtInfo.Text = text; };        txtInfo.Invoke(myDelegate, value);    }    else    {        txtInfo.Text = value;    }}

 

2、采用Action<T>的方式(推荐)
private void SetTextBoxValue(string value){    Action
setValueAction = text => txtInfo.Text = text;//Action
本身就是delegate类型,省掉了delegate的定义 if (this.txtInfo.InvokeRequired) { txtInfo.Invoke(setValueAction, value); } else { setValueAction(value); }}

 

转载于:https://www.cnblogs.com/conexpress/p/WinForm_Thread_Operate_Control.html

你可能感兴趣的文章
[AHOI2013]作业
查看>>
git push被忽略的文件 处理
查看>>
C#中用ILMerge将所有引用的DLL打成一个DLL文件
查看>>
使用makecontext实现用户线程【转】
查看>>
C# CancellationTokenSource和CancellationToken的实现
查看>>
PCIE BAR空间
查看>>
如何用数学课件制作工具画角平分线
查看>>
VS2015 中统计整个项目的代码行数
查看>>
UWP控件与DataBind
查看>>
bash: php: command not found
查看>>
XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix
查看>>
《高性能mysql》到手
查看>>
(转)关于如何学好游戏3D引擎编程的一些经验
查看>>
使用Kotlin为你的APP自定义一个统一的标题栏
查看>>
EF各版本增删查改及执行Sql语句
查看>>
拓扑排序
查看>>
jQGrid API
查看>>
Bzoj1758: [Wc2010]重建计划
查看>>
redis集群部署及踩过的坑
查看>>
j2EE监听器-listener
查看>>