InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

.NET 4 撤销框架

作者 Al Tenhundfeld 译者 朱永光 发布于 2009年6月4日

领域
企业架构,
架构 & 设计,
语言 & 开发
主题
.NET Framework 4.0 ,
.NET框架 ,
.NET ,
事务处理 ,
并行计算 ,
编程 ,
数据库
.NET 4将带来一些新类型以支持构建撤销感知的应用程序和函数库。新的CancellationToken、CancellationTokenSource和撤销异常类型提供了一个合作化的撤销框架
 
激发设计这些新类型的原则是:
  • 可用于任何工作单元,在响应撤销请求的时候,用一致的手段支持提前终止。
  • 如果某些工作单元控制着其他移动程序块,那么能够方便地连动撤销对它们的请求。
  • 阻塞调用可以支持撤销。
  • 调用复杂的操作,比如在PLINQ枚举器上调用MoveNext(),也应该有简单全面的撤销支持。
  • 在低层代码回调一些可能长时间运行的用户代码的时候,能够让用户代码以一种合作的方式观测和响应撤销请求。
  • 撤销应该成为API显而易见的一个部分,具有清晰一致的语义。
  • 撤销不应该显得过于强制而应该是合作化的。
这个框架构建于两个新类型之上:
  • CancellationToken,一个代表了“潜在的撤销请求”的结构体。这个结构体可作为一个参数,让方法进行轮询,或者注册到一个回调中,在撤销被请求的时候触发。
  • CancellationTokenSource,一个为初始化撤销请求提供相应机制的类。它也为相关的令牌提供辅助功能。这样的设计可以分离两个主要的撤销操作:初始化撤销请求,并观测和响应撤销。特别地,方法只能接受CancellationToken,这样它就只能观测撤销请求而不能初始化一个撤销。

这些新的.NET 4撤销类型提供了一个框架来构建系统,让其具有健壮且一致的撤销行为。这对GUI、应用程序、管理长时间运行或阻塞操作的函数库尤其有帮助。它的长期目标是,减少目前第三方撤销解决方案带来的多变和不一致。这些新类型也提供了统一的契约来和Parallel Extension进行互操作。

查看英文原文:.NET 4 Cancellation Framework

译者 朱永光 是IT自由人和环境保护者,微软最有价值专家(MVP)和MCSD。