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));
        }