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

本文共 2196 字,大约阅读时间需要 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");    }    }
 

 

 
 

 

 

 

 

转载于:https://www.cnblogs.com/test404/p/5952494.html

你可能感兴趣的文章
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>