使用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);
}
posted @ 2023-10-04 15:54  天空之城00  阅读(20)  评论(0)    收藏  举报