smart coder=smart code ++

高并发,高性能,分布式系统和服务器端设计
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

多任务编程(二)取消任务

Posted on 2010-06-28 19:51  smart coder  阅读(807)  评论(0编辑  收藏  举报

     在多线程编程中取消操作是一个很普遍的处理操作,最简单的做法是通过设置一个标识位来判断是否取消。.net 任务并行框架提供了一套有效机制来实现任务的取消,以降低取消操作的风险。

     在.net 任务并行框架中通过CancellationTokenSource和CancellationToken这两个类来执行任务取消操作以及获取取消状态。CancellationToken是作为一个标记存放于任务中,CancellationTokenSource是标记的状态管理者和操作者。

     一种典型的检测取消操作的方式是轮询标记。

    实例代码:

运行结果:

以委托的方式检测取消操作,任务取消操作机制提供了一种委托(delegate)方式,让我们在任务取消时执行相应的操作。

示例代码:

运行结果:

有的时候我们希望在取消一个任务的同时开启另一个任务,这时我们通过标记对象的WaitHandler的WaitOne操作来实现。

示例代码:

运行结果:

任务取消就介绍到这里,下一篇将介绍任务等待.欢迎大家提出意见.