控制台应用程序未关闭

我正在开发一个应该在WinCE 6.0WinCE 7.0下运行的console应用程序。 我出于不同的兼容性原因使用C#Compact Framework 2.0

我的应用程序由名为TwinCAT (来自Beckhoff)的外部运行时启动。 在这个应用程序中,我的队友使用了一个名为nt_startProcess ( 此处为文档)的function块,负责根据需要启动我的应用程序。

我的问题 – 两种不同的行为取决于操作系统:

  1. cmd行手动启动(不使用TwinCAT)时:

    我的应用程序在两个系统上都表现正常。 这意味着,应用程序启动,显示“Hello World”,然后返回到cmd行。

  2. 从TwinCAT开始时:

    a)在WinCE 6.0 ,我可以看到cmd行打开,显示“Hello World”并立即关闭。 对我来说是完美的行为

    b)在WinCE 7.0 ,我可以看到cmd行打开,显示“Hello World”但它仍然保持打开状态。 这是我的问题!

代码段:

 using System; using System.Collections.Generic; using System.Text; namespace MyBasicExample { class Program { static void Main(string[] args) { Console.WriteLine("Hello World"); } } } 

编译信息

在Visual Studio 2008中,在项目编译的属性中:

  • 平台目标:任何CPU

附加说明:

请注意,运行WinCE 6.0的计算机使用的是i486处理器,而运行WinCE 7.0的计算机使用的是Freescale ArmCortex进程。

WinCE 6.0:
WinCE 6.0

WinCE 7.0:
WinCE 7.0

我尝试了什么:

1)使用return 0; 在申请结束时。

在WinCE 7.0上没有任何改变。

2)使用Environment.Exit(0);

Compact Framework 2.0中不可用。

3)使用属性: IsBackground

片段:

 // ... Same snippet as above except for the next line... Thread.CurrentThread.IsBackground = true; Console.WriteLine("Hello World"); // ... 

4)从TwinCAT调用批处理文件(调用我的exe)而不是我的exe。

不适用于TwinCAT。 我收到“General Sub-Windows error”类型的错误。

5)使用Compact Framework 3.5进行测试。

相同的行为。

6)使用Windows CE 7.0和另一种处理器架构(Intel Pentium III Xeon Model A)测试另一台CX计算机(型号2020)。

相同的行为。

试试这段代码:

 Environment.Exit(0); 

您是否将.exe文件放在ProcessStartInfo Arguments属性中? 如果您必须这样做,我相信您在FileName属性中使用CMD ,因此您必须在.exe名称之前使用/K 或者只是在FileName输入.exe路径。 如果你把代码调用你的应用程序,你可以澄清很多。

尝试调用Application.Exit

这适用于窗口化应用程序,可能会强制关闭控制台窗口。