线程开启的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;
    }

}   

}

猜你喜欢

转载自blog.csdn.net/qq_42986916/article/details/84451962