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

为什么杀死.NET应用程序中的Console.Clear()是我的LabView调用?,.net,exception,labview,.net,Exception,Labview,我在Labview 8.2程序中有一个奇怪的行为。我用C#编写了一个控制台应用程序,因为这个可怕的旧labview不能使用.NET DLL 但是,我的应用程序中有一个Console.Clear()命令,可以清除屏幕。这在单机版中工作得非常好 但是,如果我尝试使用execsys命令vi从labview中打开exe,它将使用非托管处理程序崩溃。该异常由CLI引发 labview到底在这里做什么?为什么它不是简单地显示命令promt启动应用程序,而是执行一些不可理解的操作并导致崩溃 这是否意味着我无法

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

但是,我的应用程序中有一个Console.Clear()命令,可以清除屏幕。这在单机版中工作得非常好

但是,如果我尝试使用execsys命令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.

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

var output = Console.OpenStandardInput();

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

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

var output = Console.OpenStandardInput();

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

LabVIEW完全按照您的要求执行,没有命令shell。让它做些别的事情来得到你想要的。如果需要控制台,请尝试告诉LabVIEW运行cmd.exe。然后在该控制台中运行命令(使用/C选项执行此操作)。看图片。。。替换为要运行的命令


LabVIEW没有命令shell,完全按照您的要求执行。让它做些别的事情来得到你想要的。如果需要控制台,请尝试告诉LabVIEW运行cmd.exe。然后在该控制台中运行命令(使用/C选项执行此操作)。看图片。。。替换为要运行的命令



您可以发布LabView代码吗?也可以发布异常堆栈跟踪吗?当您以这种方式使用VI块时,这完全是意料之中的。当您重定向输出时,LabView将以ProcessStartInfo.CreateNoWindow=true的等效值执行程序。这是一个非常合乎逻辑的选择,因为无论如何都不会有任何东西可看。没有控制台窗口,尝试清除不存在的窗口将导致爆炸。只要停止射击你的脚,你就不会有问题了,删除Console.Clear()。这是一个适合我的解决方案(hmmm已经在等待CreateWindow调用了,我还没有到达。假设这将是下一个混乱)。。。但是——回到第二个主题——使用console.clear()的所有应用程序是怎么回事?我无法重新编译?干脆扔掉?或者如何修改labview部件以获得与Windows 95以来建立的标准的兼容性?@AllDayPiano如果删除Console。Clear()行应用程序是否按预期运行?控制台窗口是否出现?如果没有出现控制台窗口,那么为什么要清除它?可以发布LabView代码吗?也可以发布异常堆栈跟踪吗?当您以这种方式使用VI块时,这完全是意料之中的。当您重定向输出时,LabView将以ProcessStartInfo.CreateNoWindow=true的等效值执行程序。这是一个非常合乎逻辑的选择,因为无论如何都不会有任何东西可看。没有控制台窗口,尝试清除不存在的窗口将导致爆炸。只要停止射击你的脚,你就不会有问题了,删除Console.Clear()。这是一个适合我的解决方案(hmmm已经在等待CreateWindow调用了,我还没有到达。假设这将是下一个混乱)。。。但是——回到第二个主题——使用console.clear()的所有应用程序是怎么回事?我无法重新编译?干脆扔掉?或者如何修改labview部件以获得与Windows 95以来建立的标准的兼容性?@AllDayPiano如果删除Console。Clear()行应用程序是否按预期运行?控制台窗口是否出现?如果没有出现控制台窗口,那么为什么要清除它?程序应正常运行。因此,您只会在尝试与不存在的控制台交互时遇到问题。如果您有一个需要显示控制台的程序,那么您可以编写自己的包装程序,通过控制台窗口启动第二个程序。如果您需要控制台,您可以让LabVIEW运行cmd.exe。然后在该控制台中运行命令。LabVIEW正按照您的要求进行操作。要求它做些别的事情。@HansPassant是的,假设他使用4.5或更高版本,这是一个更好的选择。你不是说你使用的是LabVIEW 8.2吗?这是2006年发布的。谁需要了解这里的最新情况-p该程序应能正常运行。因此,您只会在尝试与不存在的控制台交互时遇到问题。如果您有一个需要显示控制台的程序,那么您可以编写自己的包装程序,通过控制台窗口启动第二个程序。如果您需要控制台,您可以让LabVIEW运行cmd.exe。然后在该控制台中运行命令。LabVIEW正按照您的要求进行操作。要求它做些别的事情。@HansPassant是的,假设他使用4.5或更高版本,这是一个更好的选择。你不是说你使用的是LabVIEW 8.2吗?这是2006年发布的。谁需要了解这里的最新情况-P