c#如何跨线程调用窗体控件
public
partial
c
lass
Form1 : Form
{
public
Form1()
{
InitializeComponent();
//方法1:不进行跨线程安全检查
//System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
}
private
void
button1_Click(
object
sender, EventArgs e)
{
Thread th1 =
new
Thread(
new
ThreadStart(CalNum));
th1.Start();
}
private
void
CalNum()
{
//button1.Enabled = false;
int
result = 0;
for
(
int
i = 1; i < 100000000; i++)
{
result += i;
}
SetCalResult(result);
//button1.Enabled = true;
}
//方法2:检查是否跨线程,然后将方法加入委托,调用委托
public
delegate
void
SetTextHandler(
int
result);
private
void
SetCalResult(
int
result)
{
if
(label2.InvokeRequired ==
true
)
{
SetTextHandler
set
=
new
SetTextHandler(SetCalResult);
//委托的方法参数应和SetCalResult一致
label2.Invoke(
set
,
new
object
[] { result });
//此方法第二参数用于传入方法,代替形参result
}
else
{
label2.Text = result.ToString();
}
}
}
c#如何跨线程调用窗体控件相关推荐
- C#跨线程调用窗体控件的问题
前段时间遇到跨线程调用窗体控件的问题,其实一句话System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就可以解决,但 ...
- C#【委托/事件篇】跨线程访问窗体控件的方法
文章目录 一.直接调用方法,方法中使用委托[textBox1.InvokeRequired] 二.调用委托,委托进一步关联方法 1.使用委托[最基础的调用方法:委托五步法] 2.使用Action作为委 ...
- 如何跨越线程调用窗体控件?(1)
一.前言 VS中,如果UI背后的处理工作复杂,可以启用多线程进行处理,用户不喜欢反应慢的程序.在执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速. ...
- java 线程访问控件_C#多线程与跨线程访问界面控件的方法
本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...
- C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现"线程间操作无效: 从不是创建控件的线程访问它"的异常.处理跨线程更新Winform UI控件常用 ...
- c# vs2005 多线程中调用窗体控件 (摘)
Vs 2003用多了,装了VS 2005就有点用不习惯了,以前在2003里面不会因为在线程里面对其它线程中的控件进行操作而报错,到了2005这个就变成一个异常了,不过这也是为了线程之间的安全性,所以只 ...
- C# WinForm跨线程访问UI控件
C# 跨线程访问控件 在做WinForm时,在UI线程之外调用控件会报异常:System.InvalidOperationException:"线程间操作无效: 从不是创建控件"l ...
- 跨线程调用控件之MethodInvoker
这是一部分重要的代码,用VS2005通过. 使用到两个控件,一个按钮button1,一个标签label1. private void button1_Click(object sender, Even ...
- C# 采用系统委托的方式处理线程内操作窗体控件(转载)
C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0 字号:大中小 订阅 一.System.Windows. ...
最新文章
- 华为诺亚ICLR 2020满分论文:基于强化学习的因果发现算法
- oracle中create table with as和insert into with as语句
- 使用 SqlDataSource 插入、更新和删除数据49
- Linux 应用程序 网络通讯函数记录
- amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境
- mysql保存时乱码了_MySQL保存中文乱码的原因和解决办法
- html cellpadding属性,HTML table标签 cellpadding 属性
- k8s使用volume将ConfigMap作为文件或目录直接挂载_Kubernetes in Action 06. 卷:将磁盘挂载到容器...
- Linux之shell编程基础
- Convert Sorted List to Balanced Binary Search Tree leetcode
- Linux系统编程 -- 进程控制 进程终止
- 46. magento cron
- JS下滑菜单,向下滑出二级导航
- 会员管理系统适用于哪些行业
- GIS数据转换器(栅格)(栅格向矢量网格和栅格向栅格的转换)
- Beego 使用redigo连接redis
- ESP8266-Arduino编程实例-MLX90614红外测温传感器驱动
- 作业调度框架 Quartz 学习笔记(三) -- Cron表达式 (转载)
- 循环队列求元素个数为什么为(rear-front+maxSize)%maxSize?
- 6个usb口服务器无响应,USB插口无反应怎么办?USB接口不能用解决办法
热门文章
- nginx php post限制,nginx + php 跨域问题,GET可以跨域成功,POST失败
- 句柄 matlab_matlab 整车仿真
- base.dispose(disposing) 未将对象引用到实例_程序员深入理解asp.net c#值类型和引用类型...
- Linux更改显示管理器,聊聊Linux操作系统中的显示管理器及如何更换
- php获取文件上传进度,PHP使用APC获取上传文件进度
- html获取文本框中的文字,JavaScript实现input输入框点击获取文字内容
- kibana 更新 索引模式_Kibana对索引动态加字段显示
- log4j slf4j实现_slf4j 与log4j logback的区别以及使用场景
- 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂
- 华为鸿蒙加快完善,替换安卓!华为鸿蒙OS生态持续扩大:或适配高通平台