仅记录(好多大佬都会):

跨线程操作UI控件

※在.NET2.0之后为了线程之间的安全,不允许跨线程操作控件,最简单的解决办法是禁止检查,但一般不猜用此方法,会造成各线程之间的混乱,可用作临时调试使用。

public Form1(){  InitializeCompoent();  Control.CheckForIllegalCrossThreadCalls=false;}

①跨线程操作UI控件

■测试实现的功能,单击按钮(button1),实现文本(label1)从0到100的自增

        private void button1_Click(object sender, EventArgs e){Thread pThread = new Thread(new ThreadStart(this.ThreadProcSafe));pThread.Start();}public delegate void StringArgReturningVoidDelegate(string str);private void ThreadProcSafe(){for (int i = 0; i < 100; i++){SetText(i.ToString());Thread.Sleep(100);}}private void SetText(string str){if (this.label1.InvokeRequired){StringArgReturningVoidDelegate d = new StringArgReturningVoidDelegate(SetText);this.Invoke(d, new object[] { str });}else{this.label1.Text = str;}}

②多线程,无UI操作

■使用backgroundWorker控件

        private void button1_Click(object sender, EventArgs e){using (BackgroundWorker bw = new BackgroundWorker()){bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_complete);bw.DoWork += new DoWorkEventHandler(bw_DoWork);bw.RunWorkerAsync("SQYJ");}}public void bw_complete(object secder, RunWorkerCompletedEventArgs e){MessageBox.Show("cs");}public void bw_DoWork(object sender, DoWorkEventArgs e){Thread.Sleep(1000);e.Result = e.Argument;}

转载于:https://www.cnblogs.com/clgis/p/10096097.html

c#跨线程操作控件(有UI操作)|及多线程操作相关推荐

  1. C#跨线程更新控件(UI)使用delegate方式

    C#跨线程更新(获取)控件(UI)使用delegate方式 在做界面开发的时候经常用到多线程,并且要在work线程中对控件或者界面进行操作,下面给出几种常用的操作方法 使用匿名委托到主线程中进行UI异 ...

  2. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...

  3. 多线程总结之旅(12):跨线程调用控件的几种方式

    本来是写完线程池就结束多线程总结之旅系列的,但是想想平时在项目中用到线程仅仅不够的,为什么这么说呢?举个例子:我们有一个函数,它的功能就是加载数据,然后绑定到datagridview.现在我们开启一个 ...

  4. 跨线程取出控件的值的写法(不是跨线程赋予控件值)

    //这个方法是跨线程取出控件的值,不是跨线程赋予控件值private delegate void DelegateGetControl(各种参数);private void GetControl(各种 ...

  5. c#使用MethodInvoker解决跨线程访问控件

    c#使用MethodInvoker解决跨线程访问控件 .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIlle ...

  6. c# winform InvokeRequired 解决跨线程访问控件

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. Windows 窗体中 ...

  7. 新手老问题---------跨线程的控件访问

    新手经常会遇到这样的问题: a线程去访问b线程的控件,编译器报错(.net1.0编译时好像不会报,.net2.0是肯定会的). 解决方法有3种:1, 不安全的方法: 将 Control.CheckFo ...

  8. 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)

    本文的重点在于介绍如何在多线程编程中,从非UI线程上访问界面中的控件.有过多线程编程经验的人都知道,当我们在非UI线程上试图给一个界面中的控件赋值的时候,比如说label的Text属性,系统会抛出一个 ...

  9. 跨线程调用控件之MethodInvoker

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

  10. winform使用多线程时跨线程访问控件

    之前写winform用多线程,在子线程里访问窗体控件需要用委托,由于委托使用不熟练,在网上找的各种方法都觉得太复杂看不懂,后来发现一种写法如下: if (pictureBox1.InvokeRequi ...

最新文章

  1. 从5G到6G的思考:需求、挑战、技术趋势
  2. python pandas for循环_高逼格使用Pandas加速代码,向for循环说拜拜!
  3. WebService 学习之路(一):了解并使用webService
  4. java直接量_Java教程:Java直接量(字面量)
  5. JSF Tree学习...
  6. 在 “相对” 高薪面前,任何的喊冤叫屈都是苍白无力的
  7. .NET 的一点历史往事:和 Java 的恩怨
  8. 2019年度年中回顾总结_我的2019年回顾和我的2020年目标(包括数量和收入)
  9. php 商品展示html,HTML5和CSS3实现3D展示商品信息的代码
  10. Perl用LWP实现GET/POST数据发送
  11. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能
  12. linux 标准vruntime,linux – CFS中vruntime的概念是什么
  13. (转)UML类图与类的关系详解
  14. 停掉一台服务器,Nginx响应慢(转载)
  15. mplayer+科大讯飞离线语音包
  16. java怎么编译_java怎么编译运行?java有哪些编译方法?
  17. 浅谈IPv4/IPv6转换技术
  18. (Modern Family S01E03) Part 1  PhilClaire  Phil看球赛 Dylan等Haley Clarie说Phil现在依然和Jay呆在一起很不自在
  19. Android实现用户圆形头像+背景模糊
  20. Linux 系统管理命令

热门文章

  1. 华 为 路 由 器 命 令 大 全
  2. mysql执行动态批处理,使用BAT批处理执行sql语句的代码
  3. mysql文档批处理去重_数据导入经验总结
  4. mysql 索引都有哪些_MySQL 数据库的优化,你知道有哪些?
  5. c语言产生1-6,C语言 1-6小结.ppt
  6. 两个同时comet matlab,Matlab讲义 - 图文
  7. python统计字典里面value出现的次数_python统计字典中元素出现的次数
  8. 计算机有哪两种绘图,能被计算机接受的数字图像有哪两种?它们分别由什么构成?...
  9. pythonxml解析拿到控件坐标_Python解析xml中dom元素的方法
  10. django_form表单类