// ParameterizedThreadStart.cs
public delegate void ParameterizedThreadStart<T>(T value);
// ParameterizedThread.cs
using System.Threading;
public class ParameterizedThread<T>
{
private ParameterizedThreadStart<T> parameterizedThreadStart;
private Thread thread;
public ParameterizedThread(ParameterizedThreadStart<T> start)
{
parameterizedThreadStart = start;
thread = new Thread(new ParameterizedThreadStart(Start));
}
public Thread Thread
{
get { return thread; }
}
private void Start(object obj)
{
parameterizedThreadStart.Invoke((T)obj); // Unboxing
}
public void Start(T value)
{
thread.Start(value); // Boxing
}
}
示例:
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Thread ID: {0}, Start", Thread.CurrentThread.ManagedThreadId);
ParameterizedThread<string> threadOne = new ParameterizedThread<string>(
new ParameterizedThreadStart<string>(WriteValue));
ParameterizedThread<int> threadTwo = new ParameterizedThread<int>(
new ParameterizedThreadStart<int>(WriteValue));
threadOne.Start("Hello World");
threadTwo.Start(123);
Console.ReadKey();
}
static void WriteValue<T>(T value)
{
Console.WriteLine("Thread ID: {0}, {1}", Thread.CurrentThread.ManagedThreadId, value);
}
}
本文介绍了一个使用泛型的参数化线程启动委托及类,并通过具体示例展示了如何创建并启动带有不同类型参数的线程。示例中定义了一个通用的方法来处理不同类型的线程参数,并演示了如何为字符串和整数类型的参数分别创建和启动线程。
4371

被折叠的 条评论
为什么被折叠?



