public Task WaitTillAsync(long tillTime) { TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(); Timer timer = new Timer { Id = IdGenerater.GenerateId(), Time = tillTime, tcs = tcs }; this.timers[timer.Id] = timer; this.timeId.Add(timer.Time, timer.Id); return tcs.Task; }