C#,往线程里传参数的方法总结

来源:互联网 发布:保存json文件 编辑:程序博客网 时间:2024/05/12 03:13

Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。  
Thread (ThreadStart) 初始化 Thread 类的新实例。 
由 .NET Compact Framework 支持。 
Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。  
Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。 
由 .NET Compact Framework 支持。 
  我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。 
一、不带参数的 

 

using System; using System.Collections.Generic; using System.Text; using System.Threading;  namespace AAAAAA {   class AAA   {   public static void Main()   {   Thread t = new Thread(new ThreadStart(A));   t.Start();    Console.Read();   }    private static void A()   {   Console.WriteLine("Method A!");   }   } }

结果显示Method A! 

二、带一个参数的 
  由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。 

using System; using System.Collections.Generic; using System.Text; using System.Threading;  namespace AAAAAA {   class AAA   {   public static void Main()   {    Thread t = new Thread(new ParameterizedThreadStart(B));   t.Start("B");    Console.Read();   }    private static void B(object obj)   {   Console.WriteLine("Method {0}!",obj.ToString ());    }   } }

结果显示Method B! 


三、带多个参数的 
  由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。 

 

using System; using System.Collections.Generic; using System.Text; using System.Threading;  namespace AAAAAA {   class AAA   {   public static void Main()   {   My m = new My();   m.x = 2;   m.y = 3;    Thread t = new Thread(new ThreadStart(m.C));   t.Start();    Console.Read();   }   }    class My   {   public int x, y;    public void C()   {   Console.WriteLine("x={0},y={1}", this.x, this.y);   }   } }

结果显示x=2,y=3 

四、利用结构体给参数传值。 
定义公用的public struct,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。

//结构体   struct RowCol   {   public int row;   public int col;   };  //定义方法 public void Output(Object rc)   {   RowCol rowCol = (RowCol)rc;   for (int i = 0; i < rowCol.row; i++)   {   for (int j = 0; j < rowCol.col; j++)   Console.Write("{0} ", _char);   Console.Write("\n");   }   }

原文地址:http://www.cnblogs.com/warioland/archive/2011/10/13/2210545.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 楼层之间有洞怎么办 跨大类商品疑点怎么办? 出口跨大类商品怎么办 淘宝开店显示已有店怎么办 店铺被恶意骚扰怎么办 淘宝红包过期了怎么办 手机微信被盗怎么办 手机不支持支付宝计步怎么办 学付宝fid未启用怎么办 被恶意冒名举报怎么办 淘宝鞋子发重复怎么办 爆款不小心下架怎么办 淘宝店铺没订单怎么办 总是重复看东西怎么办 运费付重复了怎么办 广州羊城通坏了怎么办 商家搞虚假活动怎么办 网购联系不上卖怎么办 发快递没有单号怎么办 健身房卡丢了怎么办 健身房合同丢了怎么办 精子数量不达标怎么办 vivo黑屏振动怎么办呀! vivox5开机定屏怎么办 wlan小米手机打不开怎么办 手机wifi开不了怎么办 厨房橱柜坏了怎么办 二手房东转三手办营业执照怎么办 手机不能计步怎么办 媒体储存删除了怎么办 设备储存器空间不足怎么办 华为铃声删除了怎么办 华为手机内存小怎么办 手机电话没声音怎么办 oppo媒体声音小怎么办 手机视频音量小怎么办 苹果6内存不够怎么办 wiwox7忘记密码了怎么办 wiwo手机声音小怎么办 海信手机声音小怎么办 ppos手机声音小怎么办