Dmi*_*hin 7 c# console console.writeline
我最近遇到了我的应用程序的以下问题:它没有显示任何控制台输出,虽然控制台已经使用分配AllocConsole.我设法很快发现它是由于AllocConsole在调用之前写入控制台的尝试(深深隐藏在代码中)引起的.所以它看起来像这样:
Console.WriteLine("Foo"); // no console allocated yet
AllocConsole(); // console window appears
Console.WriteLine("Bar"); // expecting "Bar" in the console, but the console is blank
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:为什么会发生这种情况?我没有看到任何例外(虽然我认为他们在那里).
Ric*_*key 12
第一次使用时Console.WriteLine,Console该类会创建一个TextWriter并将其与Console.Out属性关联.它的方式是使用Win32打开与标准输出文件句柄相关联的低级文件句柄.如果标准输出句柄无效,Console.Out则设置为TextWriter.Null,这将丢弃所有输出.
Win32 AllocConsole函数创建并设置标准输出句柄,因此在调用它之后,标准输出句柄要么不同,要么现在有效.在任何一种情况下,Console.Out都已设置为使用旧标准输出或丢弃所有输出.
要在强制重新打开Console.Out后调用AllocConsole,可以使用此方法:
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |