使用Thread启动线程和传输数据
使用Thread启动线程和传输数据
启动线程
static void Test()
{
Console.WriteLine("Test Started");
Console.WriteLine("Test Running");
Thread.Sleep(1000);
Console.WriteLine("Test Completed");
}
static void Main(string[] args)
{
Thread t = new Thread(Test);
t.Start();
Console.WriteLine("Main Completed");
}
使用 Lambda 表达式:
static void Main(string[] args)
{
Thread t = new Thread(() => Console.WriteLine("Child Thread: " + Thread.CurrentThread.ManageThreadId));
t.Start();
Console.WriteLine("Main Completed: " + Thread.CurrentThread.ManageThreadId);
}
使用匿名方法:
static void Main(string[] args)
{
Thread t = new Thread(delegate () {
Console.WriteLine("Child Thread: " + Thread.CurrentThread.ManageThreadId)
});
t.Start();
Console.WriteLine("Main Completed: " + Thread.CurrentThread.ManageThreadId);
}
传递数据
static void Download(Object x)
{
string str = o as string;
Console.WriteLine(str);
}
static void Main(string[] args)
{
Thread t = new Thread(Download);
t.Start("http://www.xxx.com");
}
Start()
方法只能接收无参的方法或只有一个参数的方法
传递多个数据
public struct Data
{
public string message;
public int age;
}
static void Download(Object x)
{
Data data = (Data)o;
Console.WriteLine(data.message);
Console.WriteLine(data.age);
}
static void Main(string[] args)
{
Data data = new Data();
data.message = "";
data.age = 12;
Thread t = new Thread(Download);
t.Start(data);
}