C# 使用自定义线程类向线程传递参数
2012-11-09 16:34
393 查看
C# 中的线程 Thread的定义与使用:
1.默认是需要传一个无返回值无参数的方法:void Func();
Thread th = new Thread(Func);
th.Start();
2.默认的向线程中传值,使用的是 ParameterizedThreadStart(Object obj).,无返回值 。它传入的是一个 Object类型的参数。 void Func(Object obj);
Thread th = new Thread(new ParameterizedThreadStart(Func));
th.Start(something);
3.我们可以使用一个类把线程封装起来,这样传什么参数,会自由方便得多。
示例代码:
View Code
1.默认是需要传一个无返回值无参数的方法:void Func();
Thread th = new Thread(Func);
th.Start();
2.默认的向线程中传值,使用的是 ParameterizedThreadStart(Object obj).,无返回值 。它传入的是一个 Object类型的参数。 void Func(Object obj);
Thread th = new Thread(new ParameterizedThreadStart(Func));
th.Start(something);
3.我们可以使用一个类把线程封装起来,这样传什么参数,会自由方便得多。
示例代码:
View Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ThreadTest { // 定义一个 封装纯种的抽象类 // 1.需要定义一个Thread。 // 2.一个需要让了类重写的 抽象方法: run,(线程具体的工作) // 3.一个开始线程的方法 Start. abstract class MyThread { public Thread thr = null; public abstract void run(); public void Start() { if (thr == null) { thr = new Thread(run); thr.Start(); } } } // 定义一个 类 ,继承自 封装线程类 // 可以随意的增加字段或属性(也就是相当于向线程里传参数) class Test : MyThread { private string name; private int age; public Test(string s, int i) { name = s; age = i; } // 重写 run 方法 public override void run() { Console.WriteLine("My name is " + name + " and " + age.ToString() + " years old."); } } class Program { static void Method(object s) { Console.WriteLine(s); } static void Main(string[] args) { // 使用线程类 Test t = new Test("zhoutianchi", 30); t.Start(); // 使用普通的线程传参数 ParameterizedThreadStart(Object obj). Thread t1 = new Thread(new ParameterizedThreadStart(Method)); t1.Start("zhoutianchi,liuxiaolin,zhouqihan"); Console.ReadKey(); } } }
相关文章推荐
- C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
- c# 多线程的使用-为线程传递参数
- c#使用线程传递参数的主要几种方式
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- c# 通过 p/invoke 使用 c的加密程序 参数传递问题
- C# 同一应用程序域不同线程之间的参数传递方式
- C# 使用Tuple传递多个参数
- C#参数传递方式及使用情境
- c#线程间传递参数
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode
- (转)一步一步学习C#中的多线程 --- 1、初识线程(2)--给线程传递参数
- C# 实现向线程传递参数
- C# 多线程 线程中参数传递
- C#方法参数传递-同时使用ref和out关键字
- C#Trick&Tip: 使用 ref 与 out 传递参数的区别
- C#线程间传递参数
- c#线程间传递参数
- 关于使用c#调用python脚本文件,脚本文件需要传递参数
- c#线程间传递参数