流浪のwolf

卷帝

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Csharp的CancellationToken 案例

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

// 命名空间
namespace pro01
{
    //
    internal class Program
    {
        // main 方法
        static async Task Main(string[] args)
        {
            Console.WriteLine("=======测试CancellationToken=========");
            CancellationTokenSource cts = new CancellationTokenSource();
            cts.CancelAfter(3000);
            CancellationToken cToken = cts.Token;
            await DownLoadAsync("https://www.baidu.com", 200
                , cToken);
            Console.ReadLine();
        }

        /// <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++)
                {
                    //GetStringAsync 使用异步的方法 从 url 下载 内容
                    string html = await client.GetStringAsync(url);
                    Console.WriteLine($"{DateTime.Now}:{html}");  // print container
                    if (cancellationToken.IsCancellationRequested)  // 监听是否取消了
                    {
                        Console.WriteLine("请求取消了");
                        break;
                    }
                }
            }
        }
    }
}
复制代码

 

posted on   朱龙旭的网络  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示