代码之家  ›  专栏  ›  技术社区  ›  Dolev Shapira

执行任务时不显示VS线程/任务。延迟

  •  0
  • Dolev Shapira  · 技术社区  · 6 年前

    当我执行一个程序时,我注意到当代码在任务中时。延迟没有任务或线程显示在调试器中。

    “任务”窗口或“并行堆栈”窗口中未显示任何任务(可能是因为任务是在延迟完成后创建的)。

    线程窗口中的线程存在,但它们位于本机未知代码段中,因此不显示调用堆栈。

    下图显示了一个示例:

    Threads and Parallel stacks windows status while inside task.delay

    代码示例:

    public static async Task TaskC()
    {
        Console.WriteLine("c before");
        await Task.Delay(3000);
        Console.WriteLine("c before");
    }
    static void Main(string[] args)
    {
        var c = TaskC();
        int[] dd = new int[3];
        dd[0] = 0;
        dd[1] = 1;
        dd[2] = 2;
        Parallel.ForEach(dd, async (e) => { await Task.Delay(3000); });
        c.Wait();
    }
    

    任务/线程位于任务中的可能性。代码的延迟部分通常是最高的,因为这占用了大部分时间。 在任务中。延迟是调试和查找任务和线程最重要的时间,这是无法找到它们的时间。。。

    当我们搜索bug时,我们并不总是能够记录断点命中以找到到达任务的代码。延迟,并且在程序暂停时接收当前状态非常重要。

    有人知道在代码执行任务时显示当前任务和线程堆栈跟踪的解决方案吗。延迟

    0 回复  |  直到 6 年前