zoukankan      html  css  js  c++  java
  • 对CancellationToken的简析

    最近在学习.NET中的线程同步。其中一个重要的技术叫线程的取消(中止),涉及的主要是一个叫CancellationToken的东西。

    通过学习,可以简单总结为:Token是一个令牌。当我们对Token执行Cancel()操作时,所有Token的宿主线程(或任务)都将收到取消通知,然后做出线程(或任务)中止执行的操作。

    使用CancellationToken的惯常方式如下:

    1. 先构造一个CancellationTokenSource实例,这相当于TraceSource,是令牌的生产工厂。CancellationTokenSource有一个属性Token,对应了CancellationToken,这是整个取消架构的核心。

    2. 通过设置Token属性的Register()方法,可以注册一个令牌取消后的回调方法。这个方法,在令牌收到取消请求(通知)时被调用。

    3. 在线程Start()、任务的TaskFactory、For循环,或其他能带入CancellationToken参数的创造并开启线程的方法中,把前述构造的TokenSource的Token属性返回的令牌对象作为参数传递进去,使该线程成为该Token的宿主之一。

    4. 在需要中止线程的时候,只需要调用TokenSource的Cancel()方法,即可向所有令牌发出取消通知,从而中止其宿主线程的执行。收到取消请求,至线程被中止,会有一定的时间延迟。

    转载请注明出处及作者,谢谢!
  • 相关阅读:
    WPF 如何引入外部样式
    jQuery插件-json2.js
    前端js几种加密/解密方法
    asp.net Web项目中使用Log4Net进行错误日志记录
    UpdateProgress
    UpdatePanel的简单用法(非嵌套)
    UpdatePanel的用法详解
    asp.net调用前台js调用后台代码分享
    JVM中的运行参数
    为什么要对jvm进行优化
  • 原文地址:https://www.cnblogs.com/Abbey/p/2174208.html
Copyright © 2011-2022 走看看