1.创建ThreadStart委托类型对象
namespace Test
{
class TestThread
{
private static void ThreadFuncOne()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " i = " + i);
}
Console.WriteLine(Thread.CurrentThread.Name + " has finished");
}
static void Main(string[] args)
{
Thread.CurrentThread.Name = "MainThread";
// public delegate void ThreadStart();声明一个ThreadStart委托类型
//如下代码使用TestThread.ThreadFuncOne方法创建一个委托对象 new ThreadStart(TestThread.ThreadFuncOne)
Thread newThread = new Thread(new ThreadStart(TestThread.ThreadFuncOne));
newThread.Name = "NewThread";
for (int j = 0; j < 20; j++)
{
if (j == 10)
{
newThread.Start();
newThread.Join();
}
else
{
Console.WriteLine(Thread.CurrentThread.Name + " j = " + j);
}
}
Console.Read();
}
}
}
2.Thread类有4个重载:
// 摘要:
// 创建并控制线程,设置其优先级并获取其状态。
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(_Thread))]
[ComVisible(true)]
public sealed class Thread : CriticalFinalizerObject, _Thread
{
//
// 摘要:
// 初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
//
// 参数:
// start:
// System.Threading.ParameterizedThreadStart 委托,它表示此线程开始执行时要调用的方法。
//
// 异常:
// T:System.ArgumentNullException:
// start 为 null。
[SecuritySafeCritical]
public Thread(ParameterizedThreadStart start);
//
// 摘要:
// 初始化 System.Threading.Thread 类的新实例。
//
// 参数:
// start:
// System.Threading.ThreadStart 委托,它表示此线程开始执行时要调用的方法。
//
// 异常:
// T:System.ArgumentNullException:
// start 参数为 null。
[SecuritySafeCritical]
public Thread(ThreadStart start);
//
// 摘要:
// 初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
//
// 参数:
// start:
// System.Threading.ParameterizedThreadStart 委托,它表示此线程开始执行时要调用的方法。
//
// maxStackSize:
// 线程要使用的最大堆栈大小(以字节为单位);如果为 0 则使用可执行文件的文件头中指定的默认最大堆栈大小。重要地,对于部分受信任的代码,如果 maxStackSize
// 大于默认堆栈大小,则将其忽略。不引发异常。
//
// 异常:
// T:System.ArgumentNullException:
// start 为 null。
//
// T:System.ArgumentOutOfRangeException:
// maxStackSize 小于零。
[SecuritySafeCritical]
public Thread(ParameterizedThreadStart start, int maxStackSize);
//
// 摘要:
// 初始化 System.Threading.Thread 类的新实例,指定线程的最大堆栈大小。
//
// 参数:
// start:
// System.Threading.ThreadStart 委托,它表示此线程开始执行时要调用的方法。
//
// maxStackSize:
// 线程要使用的最大堆栈大小(以字节为单位);如果为 0 则使用可执行文件的文件头中指定的默认最大堆栈大小。重要地,对于部分受信任的代码,如果 maxStackSize
// 大于默认堆栈大小,则将其忽略。不引发异常。
//
// 异常:
// T:System.ArgumentNullException:
// start 为 null。
//
// T:System.ArgumentOutOfRangeException:
// maxStackSize 小于零。
[SecuritySafeCritical]
public Thread(ThreadStart start, int maxStackSize);