代码改变世界

c#多线程调用有参数的方法

2010-08-25 23:06  田志良  阅读(2868)  评论(1编辑  收藏  举报

将线程要执行的方法参数封装到类里面,通过实例化该类,初始化方法参数,这样就实现多线程用无参的方式调用有参的方法。

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.");     
    }   
}