Multithreading in C# 5.0 Cookbook