我在Labview 8.2程序中遇到了一个奇怪的行为。我在C#中编写了一个控制台应用程序,因为这个可怕的旧labview不具备.NET DLL。
但是 - 我的应用程序中有一个Console.Clear()命令可以清除屏幕。这完全可以独立工作。
但是如果我尝试使用exec sys命令vi在labview中打开我的exe,它将使用非托管处理程序崩溃。 CLI抛出异常。
labview在这里做了什么?为什么它不是简单地显示启动应用程序的命令promt,而是做一些不可理解和崩溃的事情?
这是否意味着我无法在源代码中打开使用Console.Clear()的任何命令行工具?
异常+堆栈跟踪
Unhandled exception: System.IO.IOException: The handle is invalid.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded)
at System.Console.Clear()
at TestApp.Program.Main(String[] args) in C:\Users\xxxx\Documents\Visual Studio 2015\Projects\xxx\TestApp\Program.cs:Zeile 14.
答案 0 :(得分:3)
如果要在代码中保留Console.Clear()但希望它在没有显示控制台窗口的系统中工作,则需要确定是否已显示控制台。
var output = Console.OpenStandardInput();
if (output != System.IO.Stream.Null)
Console.Clear();
答案 1 :(得分:2)