Waiting for Events with Tasks in .NET