C# 開啟子線程的四種情況

接觸C#和VS也差不多五個月了,其實也還是個小白,關(guān)于線程的用法其實在網(wǎng)上找又一大堆,無形參無返回,無形參有返回,有形參無返回,有形參有返回的四種情況,簡單的總結(jié)一下我使用過的方法吧~

1.無形參無返回

Thread thread = new Thread(doWork);
thread.start();

2.無形參有返回
(這里的栗子是,doThread返回一個bool值)

public delegate bool MyDelegate();//根據(jù)doThread的返回類型聲明一個委托

private  void delegateThread()
{
    MyDelegate dele = new MyDelegate(doWork);//委托,但是還是還會在主線程上處理
    bool result = dele.Invoke(); //收集返回值
}

private void doThread()
{
    Control.CheckForIllegalCrossThreadCalls = false;//防止獲取界面控件是拋出的異常
    Thread thread = new Thread(new ThreadStart(delegateThread));
    thread.Priority = ThreadPriority.Highest;//優(yōu)先級
    thread.IsBackground = true;//與程序共存亡
    thread.Start();
}

3.有形參無返回

Control.CheckForIllegalCrossThreadCalls = false;
ThreadStart starter = delegate { doWork(parameter); };//parameter就是填入的參數(shù)
Thread thread= new Thread(new ThreadStart(starter));
thread.IsBackground = true;
thread.Start();

4.有形參有返回
(這里的栗子是,doThread一個int型的形參是,返回一個int值)
其實跟2.無形參有返回 差不多,都是用一個委托函數(shù)包起來。還有可以用一個類,把你的方法和成員變量包起來用也是一樣可以的。我這里就說一種方法吧。

public delegate int MyDelegate(int a);

static void Main(string[] args)
{
    Thread thread;
    thread = new Thread(new ThreadStart(delegateThread));
    thread.Start();
    thread.IsBackground = true;

    Console.ReadLine();
}

private static void delegateThread()
{
    MyDelegate dele = new MyDelegate(doWork);
    int result = dele.Invoke(3); //收集返回值
    Console.WriteLine("result:" + result);

}

private static int doWork(int num)
{
    Console.WriteLine("doWork!\n");
    return num * num;
}

其實每種情況都有多種實現(xiàn)的方法,這里就只介紹下我用過的,可能有些欠缺的地方,歡迎指點~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評論 18 399
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評論 0 38
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,891評論 0 33
  • 養(yǎng)兒防老,不啃老就算你的造化了。即使他們想養(yǎng)他們有這個能力嗎?如果要獨立成長,不想依賴在別人身上,你應(yīng)該做什么? ...
    吃肉的唐僧閱讀 396評論 0 0
  • 想寫這篇言語,是一句提問發(fā)起的。 前一天下午,我在上班,公司里一個員工查出癌癥半年不治走了,要定撫恤金;下半年分公...
    沁可閱讀 525評論 0 0

友情鏈接更多精彩內(nèi)容