public partial class 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(setnew object[] { result }); //此方法第二参数用于传入方法,代替形参result
            }
            else
            {
                label2.Text = result.ToString();
            }
        }
    }

c#如何跨线程调用窗体控件相关推荐

  1. C#跨线程调用窗体控件的问题

    前段时间遇到跨线程调用窗体控件的问题,其实一句话System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就可以解决,但 ...

  2. C#【委托/事件篇】跨线程访问窗体控件的方法

    文章目录 一.直接调用方法,方法中使用委托[textBox1.InvokeRequired] 二.调用委托,委托进一步关联方法 1.使用委托[最基础的调用方法:委托五步法] 2.使用Action作为委 ...

  3. 如何跨越线程调用窗体控件?(1)

    一.前言 VS中,如果UI背后的处理工作复杂,可以启用多线程进行处理,用户不喜欢反应慢的程序.在执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速. ...

  4. java 线程访问控件_C#多线程与跨线程访问界面控件的方法

    本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...

  5. C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)

    概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现"线程间操作无效: 从不是创建控件的线程访问它"的异常.处理跨线程更新Winform UI控件常用 ...

  6. c# vs2005 多线程中调用窗体控件 (摘)

    Vs 2003用多了,装了VS 2005就有点用不习惯了,以前在2003里面不会因为在线程里面对其它线程中的控件进行操作而报错,到了2005这个就变成一个异常了,不过这也是为了线程之间的安全性,所以只 ...

  7. C# WinForm跨线程访问UI控件

    C# 跨线程访问控件 在做WinForm时,在UI线程之外调用控件会报异常:System.InvalidOperationException:"线程间操作无效: 从不是创建控件"l ...

  8. 跨线程调用控件之MethodInvoker

    这是一部分重要的代码,用VS2005通过. 使用到两个控件,一个按钮button1,一个标签label1. private void button1_Click(object sender, Even ...

  9. C# 采用系统委托的方式处理线程内操作窗体控件(转载)

    C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0   字号:大中小 订阅 一.System.Windows. ...

最新文章

  1. 华为诺亚ICLR 2020满分论文:基于强化学习的因果发现算法
  2. oracle中create table with as和insert into with as语句
  3. 使用 SqlDataSource 插入、更新和删除数据49
  4. Linux 应用程序 网络通讯函数记录
  5. amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境
  6. mysql保存时乱码了_MySQL保存中文乱码的原因和解决办法
  7. html cellpadding属性,HTML table标签 cellpadding 属性
  8. k8s使用volume将ConfigMap作为文件或目录直接挂载_Kubernetes in Action 06. 卷:将磁盘挂载到容器...
  9. Linux之shell编程基础
  10. Convert Sorted List to Balanced Binary Search Tree leetcode
  11. Linux系统编程 -- 进程控制 进程终止
  12. 46. magento cron
  13. JS下滑菜单,向下滑出二级导航
  14. 会员管理系统适用于哪些行业
  15. GIS数据转换器(栅格)(栅格向矢量网格和栅格向栅格的转换)
  16. Beego 使用redigo连接redis
  17. ESP8266-Arduino编程实例-MLX90614红外测温传感器驱动
  18. 作业调度框架 Quartz 学习笔记(三) -- Cron表达式 (转载)
  19. 循环队列求元素个数为什么为(rear-front+maxSize)%maxSize?
  20. 6个usb口服务器无响应,USB插口无反应怎么办?USB接口不能用解决办法

热门文章

  1. nginx php post限制,nginx + php 跨域问题,GET可以跨域成功,POST失败
  2. 句柄 matlab_matlab 整车仿真
  3. base.dispose(disposing) 未将对象引用到实例_程序员深入理解asp.net c#值类型和引用类型...
  4. Linux更改显示管理器,聊聊Linux操作系统中的显示管理器及如何更换
  5. php获取文件上传进度,PHP使用APC获取上传文件进度
  6. html获取文本框中的文字,JavaScript实现input输入框点击获取文字内容
  7. kibana 更新 索引模式_Kibana对索引动态加字段显示
  8. log4j slf4j实现_slf4j 与log4j logback的区别以及使用场景
  9. 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂
  10. 华为鸿蒙加快完善,替换安卓!华为鸿蒙OS生态持续扩大:或适配高通平台