我们假设我们的代码如下所示:
WaitForTenSeconds();
//Meanwhile do something in other threads and maybe set eventHappened to true
if (!eventHappened)
{
FailDueToTimeout();
}
WaitForTenSeconds 可以使用简单的 Thread.Sleep 来实现 ,等待Task.Delay , ManualResetEvent.WaitOne 或其他类似方法
现在想象一下,我想使用断点和代码步进来调试代码的另一部分。问题是,如果我在执行延迟时中断,等待10秒然后继续执行,那么所有这些延迟实现都将超时,即使应用程序在大部分时间内被冻结。通常,这意味着您必须从头开始调试。
所以,我的问题是,是否有一种简单的方法可以实现这样的延迟,而不会计算暂停的调试时间?
注意: 我的一个解决方法是使用以下方法:
WaitForTenSeconds()
{
const int waitStep = 50;
for (int waitLeft = 10000; waitLeft > 0; waitLeft -= waitStep)
{
Thread.Sleep(waitStep)
}
}
但此代码仍有问题:
那么,还有更好的方法吗?