Start any video training course for FREE. More than 500 to choose from. Learn more
Concurrency in C# Cookbook

Errata for Concurrency in C# Cookbook

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update



Version Location Description Submitted By Date Submitted Date Corrected
Printed
Page 5
last paragraph

"artificailly" should be "artificially"

Ed Ball  Nov 19, 2014 
Printed, PDF
Page 19
Table 2-1

Title of column 2 is "Dataflow support", a copy/paste error. It should be "async support"

Note from the Author or Editor:
The first page of Chapter 2 "Async Basics", Table 2-1 "Platform support for async", the title of the second column should be changed from "Dataflow support" to "Async support"

Eric Lawrence  Jan 19, 2015 
Printed
Page 28
discussion

The discussion of abandoned tasks would be a good place to talk about TaskScheduler.UnobservedTaskException, and perhaps the fact that an unobserved exception would crash the app before .NET 4.5.

Note from the Author or Editor:
Page 26 (recipe 2.5) second paragraph of Discussion. The last sentence should be changed from "Any exceptions from those abandoned tasks will also be ignored." to "Any exceptions from those abandoned tasks are eventually sent to TaskScheduler.UnobservedTaskException, and then ignored."

Ed Ball  Nov 24, 2014 
Printed
Page 60
2nd paragraph

"operator that is" should be "operator is"

Note from the Author or Editor:
Page 58 (last Discussion paragraph of recipe 5.1), "This operator that is not necessary in most situations" should read "This operator is not necessary in most situations".

Ed Ball  Nov 20, 2014 
Printed, PDF
Page 86
second paragraph of discussion

There's an errant comma in the sentence "pass all arguments that BeginOperation, takes"

Note from the Author or Editor:
In the second paragraph of Discussion in Recipe 7.2 Async Wrappers for Begin/End Methods, the penultimate sentence should be changed from "Next, pass all arguments that BeginOperation, takes except for the last AsyncCallback and object arguments." to "Next, pass all arguments that BeginOperation takes, except for the last AsyncCallback and object arguments."

Eric Lawrence  Jan 19, 2015 
PDF
Page 96
Solution section

Stacks are described as FIFO, and Queues are described as FILO. This is backwards, stacks are FILO and Queues are FIFO.

Note from the Author or Editor:
"Stacks are a first-in, first-out data structure." should read "Stacks are a first-in, last-out data structure." (pg 96) "Queues are similar to stacks, except they are a first-in, last-out data structure." should read "Queues are similar to stacks, except they are a first-in, first-out data structure." (pg 97)

Scott S  May 29, 2014  Oct 31, 2014
Printed, PDF
Page 112
6th paragraph

When describing the BufferBlock<T> the text states: If the queue is completed, then DequeueAsync will throw InvalidOperationException. But DequeueAsync is not a method on BufferBlock<T>, it should be ReceiveAsync (as is printed correctly in the code example below): If the queue is completed, then ReceiveAsync will throw InvalidOperationException.

Note from the Author or Editor:
On page 110, the sentence "If the queue is completed, then DequeueAsync will throw" should read "If the queue is completed, then ReceiveAsync will throw"

David De Geyter  Aug 21, 2014  Oct 31, 2014
Printed, PDF
Page 116
second paragraph

The method name OutputAvailableAsync is misspelled as OutputAvailbleAsync

Note from the Author or Editor:
In the last text paragraph of the Solution in Recipe 8.9 Asynchronous Stacks and Bags (pg 114 in PDF; pg 116 printed), the first sentence should be changed from "The example consumer code uses OutputAvailbleAsync" to "The example consumer code uses OutputAvailableAsync".

Eric Lawrence  Jan 19, 2015 
Printed, PDF
Page 137
first paragraph

"responsive" is misspelled as "reponsive"

Note from the Author or Editor:
In the first paragraph of Chapter 10 "Functional-Friendly OOP" (page 135 PDF / 137 printed), the end of the first sentence "end-user applications must be more reponsive than ever." should read "end-user applications must be more responsive than ever."

Eric Lawrence  Jan 19, 2015 
Printed, PDF
Page 137
first paragraph of solution

"multiplies" is misspelled "multiples"

Note from the Author or Editor:
In the second sentence of the first paragraph of the Solution section of Recipe 12.4 Dataflow Synchronization Using Schedulers, the wording "the following code creates a dataflow mesh that multiples all of its input values" should be "the following code creates a dataflow mesh that multiplies all of its input values".

Eric Lawrence  Jan 19, 2015 
Printed
Page 165
discussion

It might be good to mention Montior.Pulse/Wait here, at least in passing.

Note from the Author or Editor:
Page 163, last Discussion paragraph of recipe 11.3. The sentence "IfManualResetEventSlim doesn’t suit your needs, consider AutoResetEvent, CountdownEvent, or Barrier." should read "IfManualResetEventSlim doesn’t suit your needs, consider Monitor, AutoResetEvent, CountdownEvent, or Barrier."

Ed Ball  Nov 24, 2014