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

本文共 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

你可能感兴趣的文章
万绿从中一点蓝,一篇无用的文章
查看>>
如何在1到100的整数数组上找到缺失的数字
查看>>
BBC 新闻数据可视化 Cookbook
查看>>
力扣(LeetCode)22
查看>>
一秒搭建gitbook
查看>>
react 与 Vue的一些比较
查看>>
vue-cli3环境变量与分环境打包
查看>>
前端爬坑之旅--echarts渲染时canvas变为100px
查看>>
C#中的Singleton模式
查看>>
git 常用命令
查看>>
在Windows下,用Hexo搭建博客
查看>>
Element组件引发的Vue中mixins使用,写出高复用组件
查看>>
【Linux系统编程】普通用户绑定(bind)特权端口
查看>>
Django搭建个人博客:文章标签功能
查看>>
63. Unique Paths II
查看>>
989-数组形式的整数加法
查看>>
Redis 源码分析之故障转移
查看>>
React as a UI Runtime(四、条件)
查看>>
阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化
查看>>
使用Logtail采集Kubernetes上挂载的NAS日志
查看>>