C#中多線程調(diào)用方式的幾種實現(xiàn)
更新時間:2025年09月30日 08:56:14 作者:鈴兒~響叮當(dāng)
本文主要介紹了C#中幾種多線程調(diào)用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
1. 樣例代碼
public class TestTasks
{
//1. 無參 無返回值
public void Task1()
{
Debug.WriteLine("-------Task1.Start...");
Thread.Sleep(3000);
Debug.WriteLine("-------Task1.End...");
}
//2. 有參 無返回值
public void Task2(int param)
{
Debug.WriteLine("-------Task2.Start..." + param);
Thread.Sleep(3000);
Debug.WriteLine("-------Task2.End...");
}
//3. 有參 有返回值
public int Task3(int param)
{
Debug.WriteLine("-------Task3.Start..." + param);
Thread.Sleep(3000);
Debug.WriteLine("-------Task3.End...");
return param + 1;
}
}2. 方式1:Task 方式(推薦)
TestTasks tt = new TestTasks();
//t1:
Task t1 = Task.Factory.StartNew(tt.Task1);
//t2: 傳參用lambda表達式
Task t2 = Task.Factory.StartNew(() => tt.Task2(102));
//等待 t1 t2 執(zhí)行完成之后,再執(zhí)行 t3.
Task.WaitAll(t1, t2);
//t3: 帶返回值
Task<int> t3 = Task.Factory.StartNew(() => tt.Task3(103));
Debug.WriteLine("-------t3: " + t3.Result);3. 方式2:Async / Await 方式 (較為推薦)
TestTasks tt = new TestTasks();
//添加 await, Task 依次執(zhí)行。
await Task.Factory.StartNew(tt.Task1);
await Task.Factory.StartNew(() => tt.Task2(102));
var result = await Task.Factory.StartNew(() => tt.Task3(103));
Debug.WriteLine("-------t3: " + result);4. 方式3:創(chuàng)建線程
TestTasks tt = new TestTasks(); new Thread(tt.Task1).Start(); //針對有參數(shù)的任務(wù),需要用Lambda進行包裝或者使用ParameterizedThreadStart對象. new Thread(x => tt.Task2((int)x)).Start(100); //但是無法執(zhí)行帶返回值的方法。
5. 方式4:線程池
TestTasks tt = new TestTasks(); ThreadPool.QueueUserWorkItem(o => tt.Task1()); ThreadPool.QueueUserWorkItem(o => tt.Task2(102)); ThreadPool.QueueUserWorkItem(o => tt.Task3(103));
到此這篇關(guān)于C#中多線程調(diào)用方式的幾種實現(xiàn)的文章就介紹到這了,更多相關(guān)C# 多線程調(diào)用方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
C#使用FFmpeg進行視頻旋轉(zhuǎn)的代碼實現(xiàn)
在視頻處理領(lǐng)域,FFmpeg被廣泛應(yīng)用于音視頻的編解碼、轉(zhuǎn)碼、剪切、合并、旋轉(zhuǎn)等任務(wù),而C#作為一種常用的開發(fā)語言,能夠輕松集成FFmpeg庫,為開發(fā)者提供強大的音視頻處理能力,本文將帶你從零開始,深入講解如何在C#中使用FFmpeg進行視頻旋轉(zhuǎn),需要的朋友可以參考下2025-05-05
Unity ScrollView實現(xiàn)無限滑動效果
這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實現(xiàn)無限滑動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
c#實現(xiàn)萬年歷示例分享 萬年歷農(nóng)歷查詢
這篇文章主要介紹了c#實現(xiàn)萬年歷的方法,可以顯示農(nóng)歷、節(jié)氣、節(jié)日、星座、星宿、屬相、生肖、閏年月、時辰,大家參考使用吧2014-01-01

