zoukankan      html  css  js  c++  java
  • CancellationTokenSource

     CancellationTokenSource

    一、代码案例

    代码:

      class Program
        {
            private static int TaskMethod(string name, int seconds, CancellationToken token)
            {
                Console.WriteLine("{0} is running on a thread id {1}. Is thread pool thread: {2}",
                    name, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);
                for (int i = 0; i < seconds; i++)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                    if (token.IsCancellationRequested) return -1;
                }
                return 42 * seconds;
            }
    
            private static void Main(string[] args)
            {
                //Test_One
                var cts = new CancellationTokenSource();
                var longTask = new Task<int>(() => TaskMethod("Task 1", 10, cts.Token), cts.Token);
                Console.WriteLine(longTask.Status);
    
                cts.Cancel();//異步多線程
                Console.WriteLine(longTask.Status);
    
                Console.WriteLine("First task has been cancelled before execution");
    
                //Test_Two
                cts = new CancellationTokenSource();
                longTask = new Task<int>(() => TaskMethod("Task 2", 10, cts.Token), cts.Token);
                longTask.Start();
                for (int i = 0; i < 5; i++)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(0.5));
                    Console.WriteLine(longTask.Status);
                }
                cts.Cancel();
                for (int i = 0; i < 5; i++)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(0.5));
                    Console.WriteLine(longTask.Status);
                }
                Console.WriteLine("A task has been completed with result {0}.", longTask.Result);
            }
        }

    结果:


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    利用border制作三角形原理
    JavaScript中null和undefined
    localStorage 如何存储JSON数据并读取JSON数据
    常见的几种浏览器内核简单介绍
    关于Banner设计的促销氛围
    分数分配
    餐饮管理系统
    餐馆管理之点菜
    餐饮管理之结账
    餐饮管理之菜品管理
  • 原文地址:https://www.cnblogs.com/wml-it/p/14858319.html
Copyright © 2011-2022 走看看