ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Winform中使用委托实现跨线程安全调用控件

Winform中使用委托实现跨线程安全调用控件

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-03-11 17:02:20 0 删除 编辑

本来是个很简单的东西,之前做项目也有碰到,但是每次遇到了都要重新去Google..

其实跨线程调用控件还有个更简单的办法,直接Control.CheckForIllegalCrossThreadCalls = false就好,可这样是非安全的,所以大部分地方都不推荐使用。

这里自己写了个例子,让自己这次就好好的把这个消化掉!
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->namespace CrossThread
{
    
public partial class Form1 : Form
    {
        
public Form1()
        {
            InitializeComponent();
        }

        
//主线程点击按钮事件
        private void btnSetLabel_Click(object sender, EventArgs e)
        {
            
try
            {
                
//在新线程中修改label的值
                Thread tdSetLabel = new Thread(new ThreadStart(SetLabel));
                tdSetLabel .Start();
            }
            
catch
            { 
            }
        }
        
//声明一个委托
        private delegate void dlgateCrossThread(string labelText);

        
private void SetLabel(string text)
        {
            
if (labState.InvokeRequired)
            {
                dlgateCrossThreadrt 
= new dlgateCrossThread(SetLabel);
                
this.Invoke(rt,new Object(){text});
            }
            
else
            {
                labState.Text 
= text;
            }
        }

    }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-566846/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5307987