public async Task<AsyncTimerResponse> StartTimer(AsyncTimerStartRequest request) { ManualResetEvent flag = new ManualResetEvent(false); Timers.Add(request.TimerId, flag); int startThreadId = Thread.CurrentThread.ManagedThreadId; Stopwatch stopwatch = Stopwatch.StartNew(); await Task.Factory.StartNew(() => flag.WaitOne(TimeSpan.FromMinutes(1))); stopwatch.Stop(); int endThreadId = Thread.CurrentThread.ManagedThreadId; Timers.Remove(request.TimerId); return new AsyncTimerResponse(request.TimerId, stopwatch.Elapsed, startThreadId, endThreadId); }
public async Task <AsyncTimerResponse> StartTimer(AsyncTimerStartRequest request) { ManualResetEvent flag = new ManualResetEvent(false); Timers.Add(request.TimerId, flag); int startThreadId = Thread.CurrentThread.ManagedThreadId; Stopwatch stopwatch = Stopwatch.StartNew(); await Task.Factory.StartNew(() => flag.WaitOne(TimeSpan.FromMinutes(1))); stopwatch.Stop(); int endThreadId = Thread.CurrentThread.ManagedThreadId; Timers.Remove(request.TimerId); return(new AsyncTimerResponse(request.TimerId, stopwatch.Elapsed, startThreadId, endThreadId)); }