Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming