Multithreading in C# 5.0 Cookbook

Multithreading in C# 5.0 Cookbook
eBook: $29.99
Formats: PDF, PacktLib, ePub and Mobi formats
save 15%!
Print + free eBook + free PacktLib access to the book: $79.98    Print cover: $49.99
save 37%!
Free Shipping!
UK, US, Europe and selected countries in Asia.
Also available on:
Table of Contents
Sample Chapters
  • Delve deep into the .NET threading infrastructure and use Task Parallel Library for asynchronous programming
  • Scale out your server applications effectively
  • Master C# 5.0 asynchronous operations language support

Book Details

Language : English
Paperback : 268 pages [ 235mm x 191mm ]
Release Date : November 2013
ISBN : 1849697647
ISBN 13 : 9781849697644
Author(s) : Eugene Agafonov
Topics and Technologies : All Books, Application Development, Cookbooks, .NET

Table of Contents

Chapter 1: Threading Basics
Chapter 2: Thread Synchronization
Chapter 3: Using a Thread Pool
Chapter 4: Using Task Parallel Library
Chapter 5: Using C# 5.0
Chapter 6: Using Concurrent Collections
Chapter 7: Using PLINQ
Chapter 8: Reactive Extensions
Chapter 9: Using Asynchronous I/O
Chapter 10: Parallel Programming Patterns
Chapter 11: There's More
  • Chapter 1: Threading Basics
    • Introduction
    • Creating a thread in C#
    • Pausing a thread
    • Making a thread wait
    • Aborting a thread
    • Determining a thread state
    • Thread priority
    • Foreground and background threads
    • Passing parameters to a thread
    • Locking with a C# lock keyword
    • Locking with a Monitor construct
    • Handling exceptions
  • Chapter 2: Thread Synchronization
    • Introduction
    • Performing basic atomic operations
    • Using the Mutex construct
    • Using the SemaphoreSlim construct
    • Using the AutoResetEvent construct
    • Using the ManualResetEventSlim construct
    • Using the CountDownEvent construct
    • Using the Barrier construct
    • Using the ReaderWriterLockSlim construct
    • Using the SpinWait construct
  • Chapter 3: Using a Thread Pool
    • Introduction
    • Invoking a delegate on a thread pool
    • Posting an asynchronous operation on a thread pool
    • Thread pool and the degree of parallelism
    • Implementing a cancellation option
    • Using a wait handle and timeout with a thread pool
    • Using a timer
    • Using the BackgroundWorker component
  • Chapter 4: Using Task Parallel Library
    • Introduction
    • Creating a task
    • Performing basic operations with a task
    • Combining tasks together
    • Converting the APM pattern to tasks
    • Converting the EAP pattern to tasks
    • Implementing a cancellation option
    • Handling exceptions in tasks
    • Running tasks in parallel
    • Tweaking tasks execution with TaskScheduler
  • Chapter 5: Using C# 5.0
    • Introduction
    • Using the await operator to get asynchronous task results
    • Using the await operator in a lambda expression
    • Using the await operator with consequent asynchronous tasks
    • Using the await operator for the execution of parallel asynchronous tasks execution
    • Handling exceptions in the asynchronous operations
    • Avoid using the captured synchronization context
    • Working around the async void method
    • Designing a custom awaitable type
    • Using the dynamic type with await
  • Chapter 6: Using Concurrent Collections
    • Introduction
    • Using ConcurrentDictionary
    • Implementing asynchronous processing using ConcurrentQueue
    • Changing asynchronous processing order ConcurrentStack
    • Creating a scalable crawler with ConcurrentBag
    • Generalizing asynchronous processing with BlockingCollection
  • Chapter 7: Using PLINQ
    • Introduction
    • Using the Parallel class
    • Parallelizing a LINQ query
    • Tweaking the parameters of a PLINQ query
    • Handling exceptions in a PLINQ query
    • Managing data partitioning in a PLINQ query
    • Creating a custom aggregator for a PLINQ query
  • Chapter 8: Reactive Extensions
    • Introduction
    • Converting a collection to asynchronous Observable
    • Writing custom Observable
    • Using Subjects
    • Creating an Observable object
    • Using LINQ queries against the observable collection
    • Creating asynchronous operations with Rx
  • Chapter 9: Using Asynchronous I/O
    • Introduction
    • Working with files asynchronously
    • Writing an asynchronous HTTP server and client
    • Working with a database asynchronously
    • Calling a WCF service asynchronously
  • Chapter 10: Parallel Programming Patterns
    • Introduction
    • Implementing Lazy-evaluated shared states
    • Implementing Parallel Pipeline with BlockingCollection
    • Implementing Parallel Pipeline with TPL DataFlow
    • Implementing Map/Reduce with PLINQ
  • Chapter 11: There's More
    • Introduction
    • Using a timer in a Windows Store application
    • Using WinRT from usual applications
    • Using BackgroundTask in Windows Store applications

Eugene Agafonov

Eugene Agafonov leads a web development department at ABBYY, and lives and works in Moscow. He has over 15 years of professional experience in software development and started to work with C# from the time it was in its beta version. He is a Microsoft MVP in ASP.NET since 2006, and he often speaks at local software development conferences, such as TechEd Russia, about cutting-edge technologies in the Modern Web and serverside application development. His main professional interests are cloud-based software architecture, scalability, and reliability. Eugene is a huge fan of football and plays the guitar with a local rock band. You can reach him at his personal blog or with his twitter handle @eugene_agafonov.
Sorry, we don't have any reviews for this title yet.

Code Downloads

Download the code and support files for this book.

Submit Errata

Please let us know if you have found any errors not listed on this list by completing our errata submission form. Our editors will check them and add them to this list. Thank you.

Sample chapters

You can view our sample chapters and prefaces of this title on PacktLib or download sample chapters in PDF format.

Frequently bought together

Multithreading in C# 5.0 Cookbook +    Citrix® XenDesktop® 7 Cookbook =
50% Off
the second eBook
Price for both: $43.05

Buy both these recommended eBooks together and get 50% off the cheapest eBook.

What you will learn from this book

  • Work with raw threads, synchronize threads, and coordinate their work
  • Work effectively with a thread pool
  • Develop your own asynchronous API with Task Parallel Library
  • Use C# 5.0 asynchronous language features
  • Scale up your server application with I/O threads
  • Parallelize your LINQ queries with PLINQ
  • Use common concurrent collections
  • Apply different parallel programming patterns
  • Work with Windows 8 asynchronous APIs
  • Use Reactive Extensions to run asynchronous operations and manage their options

In Detail

In an age when computer processors are being developed to contain more and more cores, multithreading is a key factor for creating scalable, effective, and responsive applications. If you fail to do it correctly, it can lead to puzzling problems that take a huge amount of time to resolve. Therefore, having a solid understanding of multithreading is a must for the modern application developer.

Multithreading in C# 5.0 Cookbook is an easy-to-understand guide to the most puzzling programming problems. This book will guide you through practical examples dedicated to various aspects of multithreading in C# on Windows and will give you a good basis of practical knowledge which you can then use to program your own scalable and reliable multithreaded applications.

This book guides you through asynchronous and parallel programming from basic examples to practical, real-world solutions to complex problems. You will start from the very beginning, learning what a thread is, and then proceed to learn new concepts based on the information you get from the previous examples.

After describing the basics of threading, you will be able to grasp more advanced concepts like Task Parallel Library and C# asynchronous functions. Then, we move towards parallel programming, starting with basic data structures and gradually progressing to the more advanced patterns. The book concludes with a discussion of the specifics of Windows 8 application programming, giving you a complete understanding of how Windows 8 applications are different and how to program asynchronous applications for Windows 8.


This book is an easy-to-follow guide full of hands-on examples of real-world multithreading tasks. Each topic is explained and placed in context, and for the more inquisitive readers, there are also more in-depth details of the concepts used.

Who this book is for

If you are a developer or new to multithreaded programming and you are looking for a quick and easy way to get started, then this book is for you. It is assumed that you have some experience in C# and .NET already, and you should also be familiar with computer science and basic algorithms and data structure

Code Download and Errata
Packt Anytime, Anywhere
Register Books
Print Upgrades
eBook Downloads
Video Support
Contact Us
Awards Voting Nominations Previous Winners
Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software