传参方式有两种:

1、创建带参构造方法类 传参

2、利用Thread.start(8)直接传参,该方法会接收一个对象,并将该对象传递给线程,因此在线程中启动的方法

必须接收object类型的单个参数。

3、闭包传参 该方法使用lambda表达式。

3.1 lambda表达式中使用任何局部变量时 ,C# 会自动生成一个类,并将该变量作为该类的一个属性。实际上与第一种方式基本一样,但是我们无需定义类,C#会自动编译实现该类。

3.2 使用lambda表达式会导致一些问题,如使用多个lambda表达式中使用相同的变量,他们会共享该变量值

using System;
using System.Threading; namespace testThread_Transferparameters
{
class Program
{
static void Main(string[] args)
{ //
var sample = new ThreadSample();
var threadone = new Thread(sample.CountNumbers);
threadone.Name = "ThreadOne";
threadone.Start();
threadone.Join();
Console.WriteLine("------------------"); //
var threadtwo = new Thread(count);
threadtwo.Name = "threadtwo";
threadtwo.Start();
threadtwo.Join();
Console.WriteLine("------------------"); //
var threadthree = new Thread(() => CountNumbers());
threadthree.Name = "threadthree";
threadthree.Start();
threadthree.Join();
Console.WriteLine("------------------"); int i = ;
var threadfour = new Thread(() => PrintNumber(i));
i = ;
var threadfive = new Thread(() => PrintNumber(i));
threadfour.Start();
threadfive.Start();
}
static void count(object iterations)
{
CountNumbers((int)iterations);
}
static void CountNumbers(int iterations)
{
for (int i = ; i <= iterations; i++)
{
Thread.Sleep(TimeSpan.FromSeconds(0.5));
Console.WriteLine("{0} prints {1}", Thread.CurrentThread.Name, i);
}
}
static void PrintNumber(int number)
{
Console.WriteLine(number);
}
} class ThreadSample
{
private readonly int _iterations;
public ThreadSample(int iterations)
{
_iterations = iterations;
}
public void CountNumbers()
{
for (int i = ; i <= _iterations; i++)
{
Thread.Sleep(TimeSpan.FromSeconds(0.5));
Console.WriteLine("{0} prints {1}", Thread.CurrentThread.Name, i);
}
}
}
}

结果如下:

最新文章

  1. Python单例模式
  2. 子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2
  3. DOM操作表格
  4. Android开发-Hello World+phonegap(Cordova)
  5. eclipse安装androidSDK地址,Android SDK Manager简介
  6. 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
  7. vi所有特殊字符
  8. 转 Oracle12c/11个 Client安装出现&quot;[INS-30131]&quot;错误“请确保当前用户具有访问临时位置所需的权限”解决办法之完整版
  9. Log4j 2翻译 Garbage-free Steady State Logging(稳定的以不会生成垃圾的状态来记录日志)
  10. oracle exp(expdp)数据迁移(生产环境,进行数据对比校验)
  11. [EXP]Microsoft Windows 10 (Build 17134) - Local Privilege Escalation (UAC Bypass)
  12. RAD Studio 10.3 来了
  13. Java中的split函数拆分后变成null的问题
  14. 常用nginx rewrite重定向-跳转实例:
  15. 离线方式部署Ambari2.6.0.0
  16. 《Java学习笔记JDK8》学习总结
  17. iOS边练边学--UIGestureRecognizer手势识别器简单介绍
  18. xshell连接Ubuntu虚拟机
  19. 【Anaconda】windows安装报错:UnicodeDecodeError解决方法
  20. MVC中重定向几种方法

热门文章

  1. counting sort 计数排序
  2. 编程异常——假设你报createSQLQuery is not valid without active transaction,...
  3. 【M18】分期摊还预期的计算成本
  4. 由实现JavaScript中的Map想到的
  5. [Jobdu] 题目1527:首尾相连数组的最大子数组和
  6. [AngularJS] Directive Definition Objects (DDO)
  7. UVA11038- How Many O&amp;#39;s?(组合数学)
  8. 如何在Linux下拷贝一个目录呢
  9. 《嵌入式Linux基础教程学习笔记一》
  10. EF——一个实体对应两张表,两个实体对应一张表 06 (转)