Skip to Content
C#并发编程经典实例(第2版)
book

C#并发编程经典实例(第2版)

by Stephen Cleary
November 2020
Intermediate to advanced
226 pages
5h 34m
Chinese
Posts & Telecom Press
Content preview from C#并发编程经典实例(第2版)
130
10
取消
.NET 4.0
框架引入了完备且精心设计的取消功能。对取消的支持是配合型的,这意味着取
消是可以请求的,但不可以强加于代码。因为取消是配合型的,所以除非代码在编写时就
支持取消,否则不能取消。因此,建议在代码中尽可能多地支持取消。
取消是一种信号,它具有两面性:一方面是引发取消的源,另一方面是在之后响应取消的
接收器。在
.NET
中,源是
CancellationTokenSource
,接收器是
CancellationToken
。本章探
讨常规用途下的取消源及接收器,并描述如何通过取消支持来与非标准形式的取消互操作。
取消被当作特殊种类的错误。被取消的代码往往会抛出
OperationCanceledException
类型
的异常(或衍生的类型,比如
TaskCanceledException
)。这样一来,调用代码便知晓发生
了取消操作。
要想向调用代码声明方法支持取消的情况,可以使用
CancellationToken
参数。除非方法
还要报告进度(参见
2.3
节),否则它通常是最后一个参数。还可以考虑为无须取消的消费
者提供重载或默认参数值:
public void
CancelableMethodWithOverload(CancellationToken cancellationToken)
{
// 更多代码
}
public void
CancelableMethodWithOverload()
{
CancelableMethodWithOverload(CancellationToken.None); ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

解密金融数据

解密金融数据

Justin Pauley
PHP编程:第4版

PHP编程:第4版

Kevin Tatroe, Peter MacIntyre

Publisher Resources

ISBN: 9787115550606