Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。   
Thread (ThreadStart) 初始化 Thread 类的新实例。  
由 .NET Compact Framework 支持。  
Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。   
Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。  
由 .NET Compact Framework 支持。  
  我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。  
一、不带参数的 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//结构体 
  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"); 
  
  }

C#,往线程里传参数的方法总结的更多相关文章

  1. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

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

    Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始化 ...

  3. C#线程调用带参数的方法

    在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法.第一种:使用ParameterizedThreadStart.调用 System.Threading.Thread ...

  4. jquery绑定事件时如何向事件函数里传参数

    jquery绑定事件时如何向事件函数里传参数 jquery绑定事件时如何向事件函数里传参数 举例子说明: 步骤1: var button=$('<button type="button ...

  5. 【ASP.NET Core】给中间件传参数的方法

    最近博客更新频率慢了些,原因有三: 其一,最近老周每星期六都录 ASP.NET Core 的直播,有些内容在视频里讲过,就不太想在博客里面重复.有兴趣的话可以去老周的微博看,或者去一直播,直播帐号与微 ...

  6. mybatis(3)---传参数的方法

    1.传一个参数 //接口方法List<EmpVo> find(int empId); //xml配置 <select resultType="com.ht.mapper.E ...

  7. angularjs发送delete请求传参数的方法

    angularjs使用$http.delete()发送请求,默认是没法通过变量来传参数

  8. Linux线程体传递参数的方法详解

    传递参数的两种方法 线程函数只有一个参数的情况:直接定义一个变量通过应用传给线程函数. 例子 #include #include using namespace std; pthread_t thre ...

  9. C#往线程里传递参数

    Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托. Thread (ThreadStart) 初始化 Th ...

随机推荐

  1. php常用判断的函数

    empty($var)        //用来检查变量是否为空(没有值或零值) isset($var)           //这个//测试一个变量看它是否已被定义. gettype($var)   ...

  2. NSDatePicker && NSDate

    UIDatePicker *datePicker = [[UIDatePicker alloc]init]; datePicker.datePickerMode = UIDatePickerModeD ...

  3. SVM 最大间隔目标优化函数(NG课件2)

        目标是优化几何边距, 通过函数边距来表示需要限制||w|| = 1     还是优化几何边距,St去掉||w||=1限制转为普通函数边距     更进一步的,可以固定函数边距为1,调节||w| ...

  4. volatile关键字与线程间通信

    >>Java内存模型 现在计算机普遍使用多处理器进行运算,并且为了解决计算机存储设备和处理器的运算速度之间巨大的差距,引入了高速缓存作为缓冲,缓存虽然能极大的提高性能,但是随之带来的缓存一 ...

  5. bt和wifi的共存

    转自:http://bbs.52rd.com/Thread-291892-1-1.html 蓝牙和802.11b/g/n都可能工作在2.4GISM,可能互相干扰.干扰的典型应用之一是VOIP,用手机的 ...

  6. 【Java EE 学习 21 上】【其它类型的监听器】【使用HttpSessionActivationListener监听session的活化和钝化】

    一.ServletContextListener  Method Summary  void contextDestroyed(ServletContextEvent sce)           R ...

  7. HDU1294 Rooted Trees Problem(整数划分 组合数学 DP)

    讲解见http://www.cnblogs.com/IMGavin/p/5621370.html, 4 可重组合 dfs枚举子树的节点个数,相乘再累加  1 #include<iostream& ...

  8. Oracle【IT实验室】数据库备份与恢复之三:OS备份/用户管理的备份与恢复

    用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件.这种备份与恢复需要用户的 参与手工或自动完成. 对于使用 OS拷贝备份的 ...

  9. WPF MVVM模式下实现ListView下拉显示更多内容

    在手机App中,如果有一个展示信息的列表,通常会展示很少一部分,当用户滑动到列表底部时,再加载更多内容.这样有两个好处,提高程序性能,减少网络流量.这篇博客中,将介绍如何在WPF ListView中实 ...

  10. 快速熟悉python 下使用mysql(MySQLdb)

    首先你需要安装上mysql和MySQLdb模块(当然还有其他模块可以用),这里我就略过了,如果遇到问题自行百度(或者评论在下面我可以帮忙看看) 这里简单记录一下自己使用的学习过程: 一.连接数据库 M ...