调试器步进友好延迟

时间:2017-11-03 09:55:09

标签: c# .net debugging delay

我们假设我们的代码如下所示:

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

但此代码仍有问题:

  • 它只允许有限数量的调试器步进。如果所需的延迟量很小,那么每个调试器步进“吃掉”整个waitStep超时时,步数也会很小
  • 代码看起来不够好,无法继续生产

那么,还有更好的方法吗?

0 个答案:

没有答案