在下面的控制台应用程序中,如果我在最后一行Go()放置了一个断点,并通过按F5执行到断点(在调试模式下),结果在每次运行时并不完全不同。
控制台可以为空(不输出任何东西):在调试时,如何确保输出不会进入每行代码?
,也可以输出只是另一个运行结果的一部分:
,或在极少数情况下,结果“完整”(“实现”):
如果我通过F10(Step Over)或F11(Step into)进行调试,则执行结果会立即输出到控制台窗口。
为什么这种差异?
假设我正在调试一个使用三维方库的应用程序来源代码,我没有认识到。
是否有可能确保他们的输出没有进入他们的代码?
控制台应用程序的代码: “?为什么这种差异”
using System;
using System.Threading;
namespace _5_2
{
class ThreadNaming
{
static void Main()
{
Thread.CurrentThread.Name = "main";
Thread worker = new Thread(Go);
Thread worker2 = new Thread(Go);
worker.Name = "1111";
worker.Start();
//string just4breakPoint = "aaa";
worker2.Name = "2222";
worker2.Start();
Go();
Console.ReadLine();
}
static void Go()
{
Console.WriteLine
("Hello from " + Thread.CurrentThread.Name);
}
}
}
谢谢。正如我写的,问题是我正在处理3D方库以获取我无法访问的源代码(并且在不违反许可条款的情况下不能干涉它们)。我希望可以解决/回答标题中的问题 – Fulproof 2013-02-23 04:49:34
我已经回答了这个问题:如果涉及多个线程,除非您有明确的同步,否则无法保证输出顺序。无论是第三方还是您自己的代码。 – 2013-02-23 04:52:16
这个问题不是关于排序,而是关于在断点代码之前执行完成的输出。以任何顺序 – Fulproof 2013-02-23 04:54:45