zoukankan      html  css  js  c++  java
  • C# 使用自定义线程类向线程传递参数

    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 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading;
     6 
     7 namespace ThreadTest
     8 {
     9     // 定义一个 封装纯种的抽象类
    10     // 1.需要定义一个Thread。
    11     // 2.一个需要让了类重写的 抽象方法: run,(线程具体的工作)
    12     // 3.一个开始线程的方法 Start.
    13     abstract class MyThread
    14     {
    15         public Thread thr = null;
    16         public abstract void run();
    17         public void Start() {
    18             if (thr == null) {
    19                 thr = new Thread(run);
    20                 thr.Start();
    21             }
    22         }
    23     }
    24 
    25     // 定义一个 类 ,继承自 封装线程类
    26     // 可以随意的增加字段或属性(也就是相当于向线程里传参数)
    27     class Test : MyThread
    28     {
    29         private string name;
    30         private int age;
    31         public Test(string s, int i) {
    32             name = s;
    33             age = i;
    34         }
    35         // 重写 run 方法 
    36         public override void run() {
    37             Console.WriteLine("My name is " + name + " and " + age.ToString() + " years old.");
    38         }
    39     }
    40 
    41     class Program
    42     {
    43         static void Method(object s) {
    44             Console.WriteLine(s);
    45         }
    46 
    47         static void Main(string[] args) {
    48             // 使用线程类
    49             Test t = new Test("zhoutianchi", 30);
    50             t.Start();
    51             // 使用普通的线程传参数 ParameterizedThreadStart(Object obj).
    52             Thread t1 = new Thread(new ParameterizedThreadStart(Method));
    53             t1.Start("zhoutianchi,liuxiaolin,zhouqihan");
    54 
    55             Console.ReadKey();
    56         }
    57     }
    58 }
  • 相关阅读:
    今天整理一下以前各博客网站上的文章
    转一篇详解Excel逻辑函数的文章
    Google中国的首页变化
    [转]在QuantumGrid4.5中手动添加数据
    [转]VISTA服务介绍
    Idiomatic Phrases Game zoj 2750 Dijkstra
    Fleury 求欧拉回路
    QS Network ZOJ 1586 Prim
    Burn the Linked Camp ZOJ 2770 差分约束系统 SPFA
    ZOJ 1092 POJ 2240 Arbitrage Floyd
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2762873.html
Copyright © 2011-2022 走看看