1. 程式人生 > >執行緒開啟的4種方法

執行緒開啟的4種方法

//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;
    }

}   

}