跨线程调用Windows窗体控件

转载 2006年06月19日 17:49:00

delegate void SetTextCallback(string text);
  private void SetText(string text)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (this.stbsuccess.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.stbsuccess.Text = text;
            }
        }

 Thread newThread = new Thread(new ThreadStart(threadName));    //创建线程 
  threadName.Start();           

private BackgroundWorker backgroundWorker1;
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
        private void setTextBackgroundWorkerBtn_Click(object sender,EventArgs e)
        {
            this.backgroundWorker1.RunWorkerAsync();
        }

《C#编程之道》 之 如何跨线程调用Windows窗体控件

推荐下载:《C#编程词典》体验版,免费享用最全的编程资源     在开发具有线程的应用程序时,有时会通过子线程实现Windows窗体,以及控件的操作,比如:在对文件进行复制时,为了使用户可以更好的观察...
  • MR_abc
  • MR_abc
  • 2010年09月06日 18:16
  • 4075

如何跨线程调用Windows窗体控件

 在开发具有线程的应用程序时,有时会通过子线程实现Windows窗体,以及控件的操作,比如:在对文件进行复制时,为了使用户可以更好的观察到文件的复制情况,可以在指定的Windows窗体上显示一个进度条...
  • loverszhaokai
  • loverszhaokai
  • 2010年12月12日 21:06
  • 4314

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

要从其他跨线程存取调用控件,可采用以下两种方法之一: 方法1)不进行线程安全的检查 方法2)通过委托的方式 代码如下所示 1 2 3 4 5 6 7 8 9...
  • angel20082008
  • angel20082008
  • 2014年04月13日 12:31
  • 2936

C# Winform项目中多线程环境下, 如何跨线程对Window窗体控件进行安全访问?

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: http://www.x86asm.com QQ交流: 643439947 编程生涯: 2001年~至今[共15年...
  • Code_GodFather
  • Code_GodFather
  • 2016年02月29日 15:35
  • 4955

Winform 跨线程访问控件的两个方法总结

博主刚接触线程没多久,需要实现将线程中计算出的数据传递给winform的label显示出来,但是C#中禁止跨线程直接访问控件,首先想到方法一(用委托实现) : 具体拿一个案例(内部计算已省略)说明:...
  • feelingdu
  • feelingdu
  • 2016年05月28日 15:05
  • 2274

VB.net应用技巧4: 跨线程调用控件

在VB.net应用技巧3中,说明在线程中访问控件是不安全的,本文介绍在线程中安全访问控件的方法。安全访问控件的主要方法是使用委托,即在窗体中完成对控件的调用。     1、定义委托。   ...
  • qingwufeiyang12346
  • qingwufeiyang12346
  • 2017年02月02日 14:55
  • 1024

三种青年解决“跨线程访问窗口问题”的方法

最常见的情况就是把其它线程的文字加到listbox,总结了三种写法,由繁到简 1.普通青年:声明委托,调用委托,委托里调方法 1 2 3 4 5 ...
  • Mono1977
  • Mono1977
  • 2014年09月13日 00:36
  • 1309

跨线程调用窗体控件

执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速。在 Windows 中进行多线程编程曾经是 C++ 开发人员的专属特权,但是现在,可以使用所有兼...
  • csdsuper
  • csdsuper
  • 2010年07月08日 10:35
  • 538

跨线程调用窗体控件

访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安...
  • irix2008
  • irix2008
  • 2013年09月24日 21:21
  • 619

【C#】利用委托解决跨线程操作控件产生的问题

今天多线程操作listview时VS抛出一个错误:线程间操作无效: 从不是创建控件"VisurList"的线程访问它 百度了一下,原来是C#默认禁止跨线程访问控件。也就是说每个线程默认只能访问自己...
  • mokeyjay
  • mokeyjay
  • 2013年11月22日 17:50
  • 1296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨线程调用Windows窗体控件
举报原因:
原因补充:

(最多只允许输入30个字)