我们在写Remoting程序或者其他的一些应用程序的时候难免要和线程打交道Net使我们很容易就可以创建一个线程但是它提供的创建线程和启动线程的方法没有明显的提供参数假如我们要用线程来启动类里面一个带参数的方法该怎么办?下面就简单的介绍如何使用NET提供的丰富的框架来实现这个功能为了可以生动详细的介绍整个过程我建立下面的一个NET类它也是要用线程启动的方法的载体类如下所示
using System;
namespace WindowsApplication
{
/// <summary>
/// Summary description for UrlFetcher
/// </summary>
public class MyClass{
// for method
private string _parameter;
public MyClass(string parameter){
this_parameter = parameter;
}
public void MyMethod(){
if(this_parameter!=null){
// do something
ConsoleWrite(this_parameter);
}
}
// for method
public MyClass(){}
// this method is privateBut it can be public or other
private void MyMethod(string parameter){
// do something
ConsoleWrite(parameter);
}
// Because delegate WaitCallbacks parameter Type is object
// I will convert it to string
public void MyMethod(object parameter){
thisMyMethod((string)parameter);
}
// for method
public string MyMethod(string parameter){
return 参数值为+parameter;
}
// for mutilparameters passed
public string MyMutilParameters(string paramstring param){
return 参数和参数连接结果为+param+param;
}
}
}
嘿嘿我的英语不行注释写的不好请见谅(因为使用的是英文的)希望没有影响您的阅读我想我有必要简单的说一下上面这个类里里面的所包含的内容首先包含两个构造函数一个带参数一个不带(这里可是有意安排的)通过类中其他方法的名字我想您一定猜出来我将介绍种方法来传递参数接下来我将逐一介绍首先我们看看如何启动一个线程首先我们可以用一个函数来实例化ThreadStart委托的一个实例然后在使用这个实例作为参数new线程(Thread)对象最后将这个线程Start就可以了想了解更多请参考MSDN文档的Thread部分
为了测试我们的结果我建立了一个WinForm的工程其中有一个Form和个按钮如果你需要所有的源码请发送邮件到wu如果我有时间我会给你发过去的接下来是每种方法的详细描述