執行緒開啟的4種方法
阿新 • • 發佈:2018-11-26
//Task t = new Task();//(方法一)
//Thread t = new Thread();//(方法二)
//TaskFactory tf = new TaskFactory();//(方法三)
//通過委託 開啟一個執行緒 //(方法四)
//VS新建控制檯指令碼
.
.
.
namespace XianCheng
{
class Program
{
static void Main(string[] args)
{
//傳遞一個需要執行緒去執行的方法
Task t = new Task(ThreadMethod);//(方法一)
//Thread t = new Thread(ThreadMethod);//(方法二) //開啟執行緒 t.Start(); //程序視窗保留 Console.ReadKey(); } static void ThreadMethod() { //列印 執行緒隨機ID地址 Console.WriteLine("執行緒開啟:" + Thread.CurrentThread.ManagedThreadId); //休眠3秒 Thread.Sleep(3000); Console.WriteLine("執行緒結束"); } }
}
.
.
.
.
.
//採用任務工程的方法 :
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
//採用任務工程的方法 TaskFactory tf = new TaskFactory(); //建立執行緒 Task t1 = tf.StartNew(TheadMethod); Task t2 = tf.StartNew(TheadMethod); Console.WriteLine("Main"); Console.ReadKey(); } static void TheadMethod() { Console.WriteLine("執行緒開啟:" + Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); Console.WriteLine("執行緒結束"); } }
}
.
.
.
.
.
//通過委託 開啟一個執行緒
namespace XianCheng
{
class Program
{
static void Main(string[] args) { //無引數 //Action a = Test; //a.BeginInvoke(null, null); //Console.WriteLine("Main"); //Console.ReadKey(); //有引數 //通過委託 開啟一個執行緒 Func<int, string,int> a = Test; //開啟一個新的執行緒去執行a所用的方法 IAsyncResult ar = a.BeginInvoke(199, "hah", null, null); Console.WriteLine("Main"); Console.ReadKey(); } //無引數 //static void Test() //{ // Console.WriteLine("test"); //} //有引數 static int Test(int a,String str) { Console.WriteLine("test" + a + str); Thread.Sleep(100); return 0; } }
}