如果我想一个任务一个任务调试怎么办:
static void Main()
{
var numbers = Enumerable.Range(0, 10);
var tasks = new List<Task>();
foreach (var number in numbers)
{
var task = Task.Factory.StartNew(n =>
{
var data = LongLoadOperation(n); // 1.
var calculation = Calculate(data); // 2.
var result = BuildNiceResult(calculation); // 3.
return result;
}, number);
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
Console.WriteLine("Done");
}
我不想从一个任务切换到另一个任务。调试这段代码不是很舒服。
最佳答案
令人惊讶的是,还没有人提到这一点……但也许您应该看一下“线程”窗口或“并行任务”窗口(在调试 -> Windows 中找到)。这些可能有助于调试多线程代码。如果您想逐个执行每个任务,请在任务开始处设置一个断点。每当您在每个任务上遇到该断点时,转到其中一个窗口,右键单击您正在执行的线程/任务,然后选择“卡住”它的选项。这将阻止线程自行执行。您可以使用线程/并行任务窗口在当前执行/卡住的各种任务之间切换。如果您想逐步完成其中一项任务,您可以在准备就绪时“解冻”它。实际上,您可以使用这些窗口来重新创建一些罕见的竞争条件场景。
关于c# - 我如何在 Visual Studio 中将多线程应用程序调试为单线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605629/