博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#,往线程里传参数的方法总结
阅读量:5914 次
发布时间:2019-06-19

本文共 2219 字,大约阅读时间需要 7 分钟。

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://mfgpx.baihongyu.com/

你可能感兴趣的文章
dubbo接口测试
查看>>
Maven生命周期详解(转)
查看>>
uoj#401. 【CTSC2018】青蕈领主(分治FFT)
查看>>
jvm -Xms -Xmx
查看>>
bash的pushd和popd
查看>>
数组的5个迭代方法
查看>>
2018 German Collegiate Programming Contest (GCPC 18)
查看>>
前端之jquery
查看>>
静态类和非静态类
查看>>
关于日志表的自动创建及分表储存
查看>>
topcoder srm 315 div1
查看>>
【super vlan的配置】
查看>>
洛谷P1443 马的遍历
查看>>
日期字符串格式化
查看>>
算法:合并两个排序的链表
查看>>
ps基本操作
查看>>
JS-OO-数据属性,访问器属性
查看>>
unity3d 各键值对应代码
查看>>
php strpos() 函数介绍与使用方法详解
查看>>
10年程序员的一些人生感悟
查看>>