为什么Console.WriteLine可以在多个线程中工作?
为什么Console.WriteLine可以在多个线程中工作?
Write
完成后再开始另一个调用将文本传输到流中。 - mikecout
,另一个是用C#编写的,使用了Parallel.For
和Console.Write
。虽然C++程序确实从不同的线程中输出了混合的结果,但C#程序显示了正确的输出,我找不到任何破坏它的方法。 - JustAMartinConsole.WriteLine
的顺序与文本在控制台中出现的顺序不同吗?换句话说,Console.WriteLine
是异步写入的,而不是按照调用顺序写入的吗? - WriteEatSleepRepeatWriteLine
。 - mike.NET 4.5 CLR存在一个错误,如果您使用Console.ReadKey,则会使多个线程中的Console.WriteLine无法工作。该问题已在某些Windows版本中解决,但在8.1中,Windows更新尚未找到该问题。
当使用Console.WriteLine
时,多个线程会写入相同的输出,通常是默认情况下的屏幕。
控制台和您的代码是两个独立的应用程序
控制台窗口不是您的应用程序。控制台应用程序是不可见的,您的应用程序不包含控制台。控制台安装在Windows本身中。
Console.Writeline()是一条消息
它写入一个TextStream。Microsoft的控制台进程只是等待新的流文本以显示。
'控制台应用程序'名称并不意味着它是控制台
与UI项目的区别在于,控制台应用程序带有简化的引用集,并依赖于输入/输出流来与用户通信。
您甚至不需要控制台,您可以构建自己的控制台,或使用调试器查看和写入它。
与记事本的比较
如果文件是一条消息,并且记事本打开了由您的代码保存的文件流。无论从哪个线程保存文件都没有关系。您没有访问任何UI。