【问题标题】:Prevent thread from stopping execution when debugging调试时防止线程停止执行
【发布时间】:2014-02-11 23:44:05
【问题描述】:

我有:

static void Main(string[] args)
{
    Task t = new Task(() =>
    {
        while (true)
        {
            Console.WriteLine("Test: " + DateTime.Now);
            Thread.Sleep(1000);
        }
    });
    t.Start();

    while (true)
    {
        Console.WriteLine("Main thread Test: " + DateTime.Now);
        Thread.Sleep(1000);
        Debugger.Break();
    }

    return;
}

为什么当主线程停止时,任务t 停止执行?有没有办法让任务t 继续执行,无论我是否在主线程上放置断点?


编辑

我的真实代码中没有Debugger.Break();。我每 4 秒向一台计算机发送一次 ping,让另一台计算机知道我已连接。 问题是当我开始调试我的代码时,ping 不是每 4 秒发送一次。 如果我可以将此程序保留为一个程序,而不必创建一个单独的程序负责,那就太好了用于每 4 秒发送一次 ping。

【问题讨论】:

  • 不,调试器停止执行所有线程。您可以在 Debug + Windows + Threads 调试器窗口中冻结线程。如果需要说明:不要将此代码发送给您的客户。

标签: c# multithreading debugging


【解决方案1】:

不,你不能。这就是断点的工作原理——所有线程都被中断了!

更多详情: https://*.com/a/21339186/2243584

【讨论】:

  • 我猜你是对的。现在有办法了。我得赶紧调试一下lol