.net 多线程Task的一些基本用法

void Main()
{
    //3百万个整数(从2)开始中的素数个数
    Task<int> primeNumberTask = Task.Run(()=>
      Enumerable.Range(2,3000000).Count(n=>
        Enumerable.Range(2,(int)Math.Sqrt(n)-1).All(i=>n%i >0)));
        Console.WriteLine("Task running...");

    //判断异步调用是否完成,持续显示*,直到任务完成
    IAsyncResult asyncResult = (IAsyncResult)primeNumberTask;
    while (!asyncResult.IsCompleted)
    {
        Console.Write("*");
        Thread.Sleep(100);
    }

    //打印执行结果    
    Console.WriteLine("\r\n线程执行结果: " + primeNumberTask.Result);

    //任务完成后执行的动作
    primeNumberTask.GetAwaiter().OnCompleted(()=>{
       Console.WriteLine("线程执行完毕");
    });

    primeNumberTask.ContinueWith(x=> Console.WriteLine("线程执行完后,延续做一些事!" + x.Result));
}

为避免在VS中建项目的麻烦,直接在LinqPad中编译看结果
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值