C#中多線程Tread的使用(推薦)
首先是概念,什么是線程?
線程是操作系統(tǒng)分配CPU時(shí)間的基本單元,在一個(gè)進(jìn)程中可以有多個(gè)線程同時(shí)執(zhí)行代碼。
談一談什么是進(jìn)程?
簡單的說,一個(gè)正在運(yùn)行的應(yīng)用程序可以視為一個(gè)進(jìn)程,進(jìn)程間相互獨(dú)立,資源不共享,一個(gè)進(jìn)程的運(yùn)行失敗不會影響另一個(gè)進(jìn)程的運(yùn)行,一個(gè)進(jìn)程可以啟動多個(gè)線程。
進(jìn)程入口執(zhí)行的第一個(gè)線程被視為主線程。在.Net應(yīng)用程序中,Main方法作為入口函數(shù),被調(diào)用時(shí)會啟動一個(gè)主線程。
在任務(wù)管理器中可以看到進(jìn)程和線程的運(yùn)行數(shù)量
多線程:在宏觀角度來看是多個(gè)線程并發(fā)執(zhí)行。從微觀角度來看,同一時(shí)間只能有一個(gè)線程執(zhí)行。
線程的創(chuàng)建(Tread)
using System.Threading; Thread thread=new Thread(ThreadTest);//創(chuàng)建無參數(shù)線程 Thread thread2=new Thread(ThreadTest2);//創(chuàng)建有參數(shù)線程 thread.Start(); //啟動線程 thread2.Start("aaa"); //啟動有參線程 public void ThreadTest() { return; } //注意:參數(shù)的類型必須是Object 否則無法作為delegate成為Theard的參數(shù) public void ThreadTest(Object obj) { return; }
同一個(gè)線程不可以兩次調(diào)用start,會拋出異常
根據(jù)線程的生命周期來看,只有New狀態(tài)的Thread才可以調(diào)用Start方法,如果已經(jīng)啟動,那么此線程就不是New狀態(tài)了,而是Running狀態(tài)
報(bào)錯提醒:No overload for 'method' matches delegate 'delegate'
調(diào)用的delegate的參數(shù)不是Object類型
到此這篇關(guān)于C#中多線程的使用Tread的文章就介紹到這了,更多相關(guān)C#多線程使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解
為了簡化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個(gè)簡單的小例子,簡述如何在WPF開發(fā)中應(yīng)用UniformGrid和ItemsControl實(shí)現(xiàn)均勻的布局,希望對大家有所幫助2024-01-01WPF設(shè)置窗體可以使用鼠標(biāo)拖動大小的方法
這篇文章主要介紹了WPF設(shè)置窗體可以使用鼠標(biāo)拖動大小的方法,涉及針對窗口的操作與設(shè)置技巧,具有很好的借鑒價(jià)值,需要的朋友可以參考下2014-11-11