net core异步编程

1、异步不等于多线程,但是可以由多个线程完成。

2、返回值:

无返回值Task,有返回值Task<类型>

写法:Async await

3、不要用Sleep

如果想要异步方法暂停一段时间,不要用Thread.Sleep(),因为它会阻塞调用的当前线程,而要用await Task.Delay()

4、CancellationToken

有时需要提前终止任务,比如:请求超时,用户取消请求。

很多异步方法都有CancellationToken参数,用于获得提前终止执行的信号。

static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(5000);
CancellationToken cToken = cts.Token;
await CancellationRequesteds.DownloadAsync("https://www.baidu.com",500, cToken);
}

/// <summary>
/// 异步编程
/// </summary>
/// <param name="url">访问请求</param>
/// <param name="n">次数</param>
/// <param name="cancellationToken">超时时间</param>
/// <returns></returns>
static async Task DownloadAsync(string url, int n, CancellationToken cancellationToken)
        {
            using (HttpClient client = new HttpClient())
            {
                for (int i = 0; i < n; i++)
                {
                    string html = await client.GetStringAsync(url);
                    Console.WriteLine($"{DateTime.Now}:{html}");
                    if (cancellationToken.IsCancellationRequested)
                    {
                        Console.WriteLine("取消请求");
                        break;
                    }
                }
            }
       }

5、接口中的异步方法

接口中的方法或者抽象方法不能修饰为async

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值