线程带参数操作

第二种:将线程执行的方法和参数都封装到一个类里面。通过实例化该类,方法就可以调用属性来实现间接的类型安全地传递参数。

具体代码如下(本示例来自MSDN)
using System;
using System.Threading;

//ThreadWithState 类里包含了将要执行的任务以及执行任务的方法
public class ThreadWithState {
    
//要用到的属性,也就是我们要传递的参数
    private string boilerplate;
    
private int value;

    
//包含参数的构造函数
    public ThreadWithState(string text, int number) 
    {
        boilerplate 
= text;
        value 
= number;
    }

    
//要丢给线程执行的方法,本处无返回类型就是为了能让ThreadStart来调用
    public void ThreadProc() 
    {
        
//这里就是要执行的任务,本处只显示一下传入的参数
         Console.WriteLine(boilerplate, value); 
    }
}

//用来调用上面方法的类,是本例执行的入口
public class Example {
    
public static void Main() 
    {
        
//实例化ThreadWithState类,为线程提供参数
        ThreadWithState tws = new ThreadWithState(
            
"This report displays the number {0}."42);

        
// 创建执行任务的线程,并执行
        Thread t = new Thread(new ThreadStart(tws.ThreadProc));
        t.Start();
        Console.WriteLine(
"Main thread does some work, then waits.");
        t.Join();
        Console.WriteLine(
            
"Independent task has completed; main thread ends.");  
    }
}
posted @ 2011-02-22 16:30  awp110  阅读(142)  评论(0编辑  收藏  举报