Threadsafe async code design - C#