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

时间:2016-05-04 09:42:00

标签: .net exception labview

我在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.

Labview code

2 个答案:

答案 0 :(得分:3)

如果要在代码中保留Console.Clear()但希望它在没有显示控制台窗口的系统中工作,则需要确定是否已显示控制台。

var output = Console.OpenStandardInput();

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

答案 1 :(得分:2)

LabVIEW正在完成你没有命令shell的要求。要求它做其他事情以获得你想要的东西。如果你想要一个控制台,试着告诉LabVIEW运行cmd.exe。然后在该控制台中运行命令(使用/ C选项执行此操作)。请参见图片...替换为您要运行的命令。

enter image description here