C# Concurrency (Asynchronous and multithreaded programming)