为什么在我的 LabView 调用中终止 .NET 应用程序中的 Console.Clear()?

Why is killing an Console.Clear() in a .NET Application my LabView call?

我在 Labview 8.2 程序中遇到了一个奇怪的行为。我用 C# 编写了一个控制台应用程序,因为这个可怕的旧 labview 不支持 .NET DLL。

但是 - 我的应用程序中有一个 Console.Clear() 命令应该清除屏幕。这可以完美地独立运行。

但是,如果我尝试使用 exec sys 命令 vi 从 labview 中打开我的 exe,它将因非托管处理程序而崩溃。 CLI 抛出异常。

labview 到底在做什么?为什么它不只是显示启动应用程序的命令提示符,而是执行一些无法理解和崩溃的操作?

这是否意味着我无法打开任何在其源代码中使用 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.

如果您想在代码中保留 Console.Clear() 但希望它在不显示控制台 window 的系统中工作,那么您需要确定控制台是否已被显示。

var output = Console.OpenStandardInput();

if (output != System.IO.Stream.Null)
    Console.Clear();

LabVIEW 通过没有命令 shell 完全按照您的要求进行操作。要求它做其他事情以获得你想要的东西。如果您需要控制台,请尝试告诉 LabVIEW 运行 cmd.exe。然后 运行 该控制台中的命令(使用 /C 选项执行此操作)。查看图片...替换为您想要的命令运行。