C#多线程方式
一,Thread
Thread默认开启前台线程。 其他的开启方式默认开启后台线程。
//通过ParameterizedThreadStart创建线程
Thread thread = new Thread((obj) =>
{
Console.WriteLine(obj);
});
//给方法传值
thread.Start("这是一个有参数的委托");
二,线程池
ThreadPool.QueueUserWorkItem((obj) =>
{
Console.WriteLine("123456");
});
三,Task 开启
var task1=Task.Factory.StartNew(()=>
{
Console.WriteLine("111");
});
Task task2 = new Task(()=>
{
Console.WriteLine("222");
});
Task task3 = task2.ContinueWith((o) => // 完成时异步执行的延续任务
{
Console.WriteLine("333"); // 开启任务 task2, 当task2执行完毕的时候,会执行task3的任务
});
task2.Start();
四,后台线程
BackgroundWorker
五,List Task
List<Task> tasks = new List<Task>();
tasks.add(task1);
tasks.add(task1);
await Task.WhenAll(tasks);
private async Task task1()
{
await Task.Run(() =>
{
Thread.Sleep(1000);
Console.WriteLine($"异步线程执行异");
});
}