<pre name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ThreadSample
{
public class Program
{
static void Main(string[] args)
{
CreateThread1();
//CreateThread2();
//CreateThread3();
Console.ReadLine();
}
/// <summary>
/// 简单线程
/// </summary>
private static void CreateThread1()
{
for (int threadidx = 0; threadidx < 10; threadidx++)
{
Thread t = new Thread(new ThreadStart(fun1));
t.Start();
}
}
/// <summary>
/// 带参数线程
/// </summary>
private static void CreateThread2()
{
for (int threadidx = 0; threadidx < 10; threadidx++)
{
ParameterizedThreadStart ParStart = new ParameterizedThreadStart(fun2);
Thread myThread = new Thread(ParStart);
ThreadArgs args = new ThreadArgs { ThreadIdx = threadidx, ThreadName = "线程" + threadidx, Memo = "备注" };
myThread.Start(args);
}
}
/// <summary>
/// 线程执行完处理
/// </summary>
private static void CreateThread3()
{
List<System.Threading.Tasks.Task> tasks = new List<System.Threading.Tasks.Task>();
for (int threadidx = 0; threadidx < 10; threadidx++)
{
ThreadArgs args = new ThreadArgs { ThreadIdx = threadidx, ThreadName = "线程" + threadidx, Memo = "备注" };
System.Threading.Tasks.Task task = System.Threading.Tasks.Task.Factory.StartNew((object obj) => fun2(obj), args);
tasks.Add(task);
}
System.Threading.Tasks.Task.WaitAll(tasks.ToArray());
Console.WriteLine("所有线程执行完毕");
}
private static void fun1()
{
Console.WriteLine("call fun1");
}
/// <summary>
/// 带参数方法
/// </summary>
/// <param name="obj"></param>
private static void fun2(object obj)
{
ThreadArgs args =(ThreadArgs)obj;
Console.WriteLine("call fun2 --idx:"+args.ThreadIdx +"--name:" + args.ThreadName);
}
}
/// <summary>
/// 参数
/// </summary>
public class ThreadArgs
{
public int ThreadIdx;
public string ThreadName;
public string Memo;
}
}