创建带参数线程的几个简单方法
方法一 通过“ParameterizedThreadStart”方法和object对象传入
private void ThreadParameterized()
{
string message = "gggg";
Thread thread = new Thread(new ParameterizedThreadStart(ParameterizedFunction));
thread.IsBackground = true;
thread.Start(message);
}
private void ParameterizedFunction(object item)
{
Console.WriteLine(item);
}
该方法也可以新建一个类 由于所有类型基类隐式继承Object,在传入方法的时候不需要强制转换成object类型 但是在传入后需要进行一次类型转换才可以调用新建类的内部成员。
private void ParameterizedFunctionClass(object item)
{
TestClass t1 = item as TestClass;
Console.WriteLine(t1.Test1);
Console.WriteLine(t1.Test2);
}
public class TestClass
{
public string Test1 = "G1";
public string Test2 = "G2";
public void TestFunction()
{
Console.WriteLine(Test1);
Console.WriteLine(Test2);
}
}
方法二 新建一个类型,在类型中定义线程调用的方法,该方法没有参数。
private void ThreadClassFunction()
{
TestClass t1 = new TestClass();
Thread thread = new Thread(new ThreadStart(t1.TestFunction));
thread.IsBackground = true;
thread.Start();
}
public class TestClass
{
public string Test1 = "G1";
public string Test2 = "G2";
public void TestFunction()
{
Console.WriteLine(Test1);
Console.WriteLine(Test2);
}
}
方法三 如果要进行简单的线程调用,又不想新建一个类 可以采用lambda表达式新建一个线程。
private void ThreadLambda()
{
int a = 0;
int b = 100;
Thread thread = new Thread(() =>
{
while (a < 100 && b > 0)
{
Console.WriteLine(a++);
Console.WriteLine(b--);
Console.WriteLine();
}
});
thread.IsBackground = true;
thread.Start();
}