Task

来源:互联网 发布:js 删除预览图片 编辑:程序博客网 时间:2024/06/08 06:18

Task启动的线程是后台线程,不过可以在调用线程中调用task.Wait()方法,使应用程序等待task执行完毕

static void Main(string[] args){    Console.WriteLine("主线程启动");    //.NET 4.5引入了Task.Run静态方法来启动一个线程    Task.Run(() =>     {        Thread.Sleep(1000);        Console.WriteLine("Task1启动");    });    //Task启动的是后台线程,假如要在主线程中等待后台线程执行完毕,可以调用Wait方法    Task task = Task.Run(() =>     {        Thread.Sleep(500);        Console.WriteLine("Task2启动");    });    task.Wait();    Console.WriteLine("主线程结束");    Console.ReadLine();    Console.Clear();}

Task<TResult>是Task的泛型版本,这两个之间的最大不同是Task<TResult>可以有一个返回值TResult

Task<TResult>的实例对象有一个Result属性,当在Main方法中调用task.Result的时候,将等待task执行完毕并得到返回值,这里的效果跟调用task.Wait()是一样的,只是多了一个返回值

static void Main(string[] args){    Console.WriteLine("主线程开始");    Task<string> task = Task<string>.Run(() =>     {        Thread.Sleep(1000);        return Thread.CurrentThread.ManagedThreadId.ToString();    });    Console.WriteLine(task.Result);    Console.WriteLine("主线程结束");}

0 0
原创粉丝点击