一、前言VS中,如果UI背后的处理工作复杂,可以启用多线程进行处理,用户不喜欢反应慢的程序。在执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速。那么如果在UI上反应最新的处理状态呢?这就是如果在子线程(即新开启的处理复杂任务的线程)中更新UI处理状态信息

二、通过设置Form属性

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

注意红色部分代码

缺点:将UI传给了子线程,违背了弱耦合、封装的思想。子线程去更新UI的状态,如果有多个不同主线程要获取子线程状态,怎么办?

public partial class Form1 : Form
    {
        public subThread subPro = null;

public Form1()
        {
            InitializeComponent();
            Form1.CheckForIllegalCrossThreadCalls = false;
        }

private void 启动子线程_Click(object sender, EventArgs e)
        {
            subPro = new subThread(this);
            ThreadStart threadFunc = new ThreadStart(subPro.Process);  //注意,使用了有参数构造函数。将UI对象传给了子线程
            Thread thread1 = new Thread(threadFunc);
            thread1.Start();
        }

private void button1_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = subPro.count.ToString();
        }
    }

public class subThread
    {
        public int count = 0;
        public Form1 thisForm = null;

public subThread()
        {

}

public subThread(Form1 form)
        {
            this.thisForm = form;
        }

public void Process()
        {

bool flag = true;
            do
            {
                count++;
                thisForm.txtDisplay.Text = count.ToString();   //注意,直接修改了UI的界面
                Thread.Sleep(1000);
                if (count > 10000)
                {
                    flag = false;
                }
            } while (flag);
        }
    }

转载于:https://www.cnblogs.com/peijihui/archive/2010/04/10/1709048.html

如何跨越线程调用窗体控件?(3)相关推荐

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

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

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

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

  3. c#如何跨线程调用窗体控件

    public partial class Form1 : Form     {         public Form1()         {             InitializeCompo ...

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

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

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

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

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

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

  7. C# 静态函数调用窗体控件

    C# 静态函数调用窗体控件 回调函数方法是静态函数,需要调用窗体控件,赋值或取值. 定义: public static Form1 mainFrm; mainFrm = this; public pa ...

  8. c#中如何跨线程调用windows窗体控件?

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...

  9. c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。...

    首先来看传统方法: public partial class Form1 : Form{public Form1() { InitializeComponent(); } private void F ...

  10. 如何在多线程中调用winform窗体控件2——实例篇

    如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...

最新文章

  1. 清除重复记录只保留一条
  2. Android 底层驱动开发步骤——linux内核层、HAL层、JNI层
  3. sql可视化工具_数据分析该用什么工具?
  4. axios 请求的配置选项
  5. SAP Spartacus Spinner控件显示原理
  6. 修改Hybris Administration console管理员默认登录密码
  7. JVM源码分析之System.currentTimeMillis及nanoTime原理详解
  8. 如何在 ASP.NET Core 中使用 HttpClientFactory ?
  9. 微信小程序将支持分享到朋友圈;美团入局社区团购;Kotlin 1.4-M3 发布 | 极客头条
  10. (转)Visual C++开发工具与调试技巧整理
  11. 性能高的tftp服务器,tftp服务器软件
  12. matlab资产组合最优配置,[转载]资产组合有效前沿的解和最优解(MATLAB语言)
  13. 明尼苏达双城计算机科学硕士申请截止日期,明尼苏达大学双城分校
  14. 入门Python需要掌握的技能有哪些?
  15. 港科夜闻|香港科技大学校长叶玉如教授,新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法...
  16. Day005 - 循环练习与列表基础
  17. 三个月能学到多少网络安全知识?
  18. Matlab常用命令汇总
  19. subscription-manager repos --enable <repo>
  20. 机器学习--逻辑回归模型(Logistic Regression)

热门文章

  1. 知识整理2019清北学堂提高储备D1
  2. 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)
  3. Android 测试 之MonkeyRunner
  4. 网络编程+并发编程总结
  5. [Codeforces667A]Pouring Rain(数学,几何)
  6. redis运维常用的server端命令
  7. 从程序员到项目经理(16):原来一切问题都是可以解决的【转载】
  8. Matlab字符串转换及数值格式转换
  9. java byte与char互转原理
  10. 黑体std能商用_用产品诠释商用PC成功之道 惠普战66高性能商用一体机评测