首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 应用委托跨线程通讯

2012-08-30 
C# 使用委托跨线程通讯当我们需要处理大量数据时,为了使UI界面不致出现假死状态,我们就必须使用多线程进行

C# 使用委托跨线程通讯

      当我们需要处理大量数据时,为了使UI界面不致出现假死状态,我们就必须使用多线程进行处理。所以问题就出现了,我们都知道线程作为一个独立运行的单元,线程间不可以随意访问和修改,那么该怎么办呢?其实C#提供了跨线程访问的方法,也就是通过委托安全调用从非拥有控件的线程访问控件。

        一、委托

        我们首先先来了解下委托,简单地说,委托就是一个类,它定义了方法传递参数的类型和个数,使得我们可以把方法作为参数进行传递,使得程序具有更好的扩展性。如果大家还不明白的话,我们可以举个例子:

    private void button1_Click(object sender, EventArgs e)   {      Thread newThread = new Thread(new ThreadStart(threadHandler));                   newThread.Start();    }     private void threadHandler()     {           if(this.label1.InvokeRequired)  //判断label1控件是否是调用线程(即newThread线程)创建的,也就是是否跨线程调用,如果是则返回true,否则返回false           {               this.label1.Invoke(new EventHandler(setLabelText),new object[]{"这是lable控件"});   //EventHandler可以传递object参数           }           else           {               this.label1.Text = "这是lable控件";           }      }      private void setLabelText(object o, System.EventArgs e)       {           this.label1.Text =  o.ToString();       }
            后述:委托的内容就讲到这吧,讲得不对不好的地方请大家多多包涵。

热点排行