在MS认证书中,我看到了这一部分:
public Task SleepAsyncA(int millisecondsTimeout)
{
return Task.Run(() => Thread.Sleep(millisecondsTimeout));
}
public Task SleepAsyncB(int millisecondsTimeout)
{
TaskCompletionSource<bool> tcs = null;
var t = new Timer(delegate { tcs.TrySetResult(true); }, null, -1, -1);
tcs = new TaskCompletionSource<bool>(t);
t.Change(millisecondsTimeout, -1);
return tcs.Task;
}
SleepAsyncA方法在休眠时使用线程池中的线程。第二 然而,具有完全不同的实现的方法不占用 等待计时器运行时的线程。第二种方法为您提供了可伸缩性。
但是,Timer在等待特定时间内是否使用专用线程?