C#開啟線程的四種方式示例詳解
一、異步委托開啟線程
public static void Main(string[] args){
Action<int,int> a=add;
a.BeginInvoke(3,4,null,null);//前兩個是add方法的參數(shù),后兩個可以為空
Console.WriteLine("main()");
Console.ReadKey();
}
static void add(int a,int b){
Console.WriteLine(a+b);
}
運行結(jié)果:

如果不是開啟線程,像平常一樣調(diào)用的話,應該先輸出7,再輸出main()
二、通過thread類開啟線程
using System;
using System.Threading;
public static void Main(string[] args){
Thread t=new Thread(DownLoadFile_My);//創(chuàng)建了線程還未開啟
t.Start("http://abc/def/**.mp4");//用來給函數(shù)傳遞參數(shù),開啟線程
Console.WriteLine("main()");
Console.ReadKey();
}
//thread開啟線程要求:該方法參數(shù)只能有一個,且是object類型
static void DownLoadFile_My(object filePath){
Console.WriteLine("開始下載:"+filePath);
Thread.Sleep(2000);
Console.WriteLine("下載完成!");
}
運行結(jié)果:

三、通過線程池開啟線程
public static void Main(string[] args){
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
ThreadPool.QueueUserWorkItem(DownLoadFile_My);
Console.WriteLine("main()");
Console.ReadKey();
}
static void DownLoadFile_My(object state){
Console.WriteLine("開始下載... 線程ID:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("下載完成!");
}
運行結(jié)果:

4、通過任務開啟線程
1>Task開啟線程
using System;
using System.Threading;
using System.Threading.Tasks;
public static void Main(string[] args){
Task t=new Task(DownLoadFile_My);
t.Start();
Console.WriteLine("main()");
Console.ReadKey();
}
static void DownLoadFile_My( ){
Console.WriteLine("開始下載... 線程ID:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("下載完成!");
}
運行結(jié)果:

2>TaskFactory開啟線程
public static void Main(string[] args){
TaskFactory tf=new TaskFactory();
tf.StartNew(DownLoadFile_My);
Console.WriteLine("main()");
Console.ReadKey();
}
static void DownLoadFile_My( ){
Console.WriteLine("開始下載... 線程ID:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("下載完成!");
}
運行結(jié)果:

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C#實現(xiàn)讀取多條數(shù)據(jù)記錄并導出到Word
這篇文章主要為大家詳細介紹了C#如何實現(xiàn)讀取多條數(shù)據(jù)記錄并導出到Word,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-03-03
基于C#實現(xiàn)Windows服務狀態(tài)啟動和停止服務的方法
這篇文章主要介紹了基于C#實現(xiàn)Windows服務狀態(tài)啟動和停止服務的方法,詳細講述了實現(xiàn)這一功能的具體步驟,代碼簡潔易懂,需要的朋友可以參考下2014-09-09
C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法
這篇文章主要介紹了C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法,涉及C#調(diào)用SQLite組件及針對SQLite數(shù)據(jù)庫基本的連接、查詢、關(guān)閉等使用技巧,需要的朋友可以參考下2016-07-07

