博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中创建线程,创建带参数的线程
阅读量:5160 次
发布时间:2019-06-13

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

线程操作主要用到Thread类,他是定义在System.Threading.dll下。使用时需要添加这一个引用。该类提供给我们四个重载的构造函

构造函数定义:

无参数委托

[SecuritySafeCritical]public Thread(ThreadStart start);[SecuritySafeCritical]public Thread(ThreadStart start, int maxStackSize);

有一个参数object委托

[SecuritySafeCritical]public Thread(ParameterizedThreadStart start);[SecuritySafeCritical]public Thread(ParameterizedThreadStart start, int maxStackSize);// maxStackSize:// 线程要使用的最大堆栈大小(以字节为单位);如果为 0 则使用可执行文件的文件头中指定的默认最大堆栈大小。重要地,对于部分受信任的代码,如果 maxStackSize// 大于默认堆栈大小,则将其忽略。不引发异常。

一、创建没有参数传入线程

//创建没有参数的线程Thread thread = new Thread(new ThreadStart(ThreadMethod));//或者//Thread thread = new Thread(ThreadMethod);thread.Start();Console.WriteLine("代码执行完成");
//线程方法定义public static void ThreadMethod(){    Console.WriteLine("当前线程ID:{0},当前线程名称:{1}",        Thread.CurrentThread.ManagedThreadId,        Thread.CurrentThread.Name);    while (true)    {        Console.WriteLine(DateTime.Now);        Thread.Sleep(1000);    }}

二、创建一个参数传入object类型的线程

public static void Init(){    //创建一个参数的线程    //ParameterizedThreadStart 指定传入的类型是object    for (int i = 0; i < 3; i++)    {        Thread thread = new Thread(new ParameterizedThreadStart(ThreadMethod));        object obj = i * 10;        thread.Start(obj);    }}//定义线程方法public static void ThreadMethod(object number){    int i = (int)number;    while (true)    {        i++;        Console.WriteLine("当前线程ID:{0},number={1}", Thread.CurrentThread.ManagedThreadId, i);        Thread.Sleep(2000);    }}

三、创建使用对象实例方法,创建多个参数传入情况的线程

public static void Init(){    //创建多个传入参数的线程    for (int i = 1; i < 4; i++)    {        Calculator cal = new Calculator(i, i * 100);        Thread thread = new Thread(new ThreadStart(cal.Add));        thread.Start();    }}
public class Calculator{    public int X { get; set; }    public int Y { get; set; }    public Calculator(int x, int y)    {        this.X = x;        this.Y = y;    }    //定义线程执行方法    public void Add()    {        int i = 0;        while (i < 2)        {            i++;            Console.WriteLine("当前线程ID:{0},{1}+{2}={3}", Thread.CurrentThread.ManagedThreadId, X, Y, X + Y);            Thread.Sleep(1000);        }    }}

转载于:https://www.cnblogs.com/tianma3798/p/5764476.html

你可能感兴趣的文章
地图源改变之后mxd文件打开很慢的问题
查看>>
51Nod - 1013 3的幂的和
查看>>
Leetcode 492. 构造矩形
查看>>
一、浏览器生成消息(1)
查看>>
POJ1753——Flip Game
查看>>
最短路径算法之一——Floyd算法
查看>>
WIN32 窗口封装类实现
查看>>
号外!GNOME 3.22 正式发布喽!!!
查看>>
[USACO2003][poj2018]Best Cow Fences(数形结合+单调队列维护)
查看>>
JS调用后台方法大全
查看>>
一种脱离VC编程软件的方法学习C/C++编程(搭建EditPlus实现在文本编辑框中执行.c文件...
查看>>
[科普文] 关于浏览器内核的一些小知识,明明白白选浏览器!
查看>>
软硬件之共生之道——一千零一夜的启发
查看>>
(一一二)图文混排中特殊文字的点击与事件处理
查看>>
iPhone开发经典语录集锦 (转)
查看>>
SVM基础必备常识
查看>>
FPGA时序约束的几种方法 (转)
查看>>
cocos2dx 3.x tolua 分析
查看>>
oracle 外网访问
查看>>
jdbc连接数据库方式问题
查看>>