这是一部分重要的代码,用VS2005通过。

使用到两个控件,一个按钮button1,一个标签label1。


private void button1_Click(object sender, EventArgs e)

{

Thread thread=new Thread(new ThreadStart(myname));

thread.IsBackground=true;

thread.Start();

// 启动一个线程。

}

private void myname()

{

MethodInvoker mi = new MethodInvoker(hello);

//创建一个委托,hello是该委托所托管的代码,必须是声明为void的。

Invoke(mi);//同步执行委托。

//BeginInvoke(mi);异步执行委托。

}

private void hello()

{

label1.Text = "我是跨线程的!";

}


那里不正确,一定要指出,我可不想误导人,也不想被自己误导。

PS:写完后我发现http://tb.blog.csdn.net/TrackBack.aspx?PostId=715064早就有解释,比我的还详细,领教了。

故补充以下代码:

private Thread myThread;
       private void Form1_Load(object sender, EventArgs e)
        {
            myThread = new Thread(new ThreadStart(RunsOnWorkerThread));
            myThread.Start();
        }
       private void RunsOnWorkerThread()
        {
           //DoSomethingSlow();
           string pList = "myThread线程调用UI控件";
            label1.BeginInvoke(new System.EventHandler(UpdateUI), pList);
        }
       //直接用System.EventHandler,没有必要自定义委托
       private void UpdateUI(object o, System.EventArgs e)
        {
          //UI线程设置label1属性
            label1.Text = o.ToString() + "成功!";
        }

转载于:https://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html

跨线程调用控件之MethodInvoker相关推荐

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

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

  2. C# 跨线程调用控件

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

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

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

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

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

  5. C#跨线程操作控件的线程安全方法

    C#跨线程操作控件的线程安全方法 在C#中,经常用到这样一个场景,Windows Form程序启动一个工作者线程执行一部分工作,这样做是为了避免速度慢的工作如果直接调用会使得主Form停止响应一段时间 ...

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

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

  7. c#跨线程操作控件(有UI操作)|及多线程操作

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

  8. WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD

    http://www.cnblogs.com/joey0210/p/3450379.html 最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录 ...

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

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

最新文章

  1. 我的商汤实习年末总结
  2. 何时使用Delegate,何时使用Interface
  3. Git撤销修改场景及对应指令(checkout、reset、revert)详解
  4. 使用 yo 命令行向导创建 SAP UI5 应用
  5. 【CF1215E】Marbles【状压DP】
  6. Linux基础笔记1
  7. Postman接口压力测试
  8. Banana PI 开源硬件项目启动
  9. 图论及其应用(吴望明中文版)
  10. 献给青春的歌 · 致「 腾讯QQ 18 岁」
  11. 基于小波变换的数字水印技术
  12. Ignite-初识Ignite
  13. aws 亚马逊_Amazon AWS Rekognition教程
  14. Vision Transformer综述翻译
  15. ai怎么平均排列,ai怎样可以按设定的距离进行平均分布排列
  16. 最新迪恩电影/美剧DiscuzV3.2商业版模板源码
  17. C#“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”
  18. MATLAB 2014a将m文件打包成jar包
  19. GJB-150三防试验机构,国军标试验机构
  20. 驱动人生2014网卡版 v6.0.11.74 官方版

热门文章

  1. C#使用事务SqlTransaction操作sql语句
  2. SpringMVC的核心思想,概念及特点
  3. ant的高级使用,ant命令详解,ant打包,ant编译后打包去掉jar文件
  4. html 颜色镂空,div的CSS3弯曲镂空?
  5. AutoCAD2008对应的acad.rx文件
  6. python编写电子菜单_Python简单实现多级菜单
  7. python零基础对main.py的学习(DROO)
  8. Java多线程技能(九)——暂停线程
  9. 【学习02】使用MySQL简单入门
  10. uc笔试题 java_祭奠迅雷JAVA笔试和UC笔试