控制台应用程序未关闭
我正在开发一个应该在WinCE 6.0
和WinCE 7.0
下运行的console
应用程序。 我出于不同的兼容性原因使用C#
, Compact Framework 2.0
。
我的应用程序由名为TwinCAT
(来自Beckhoff)的外部运行时启动。 在这个应用程序中,我的队友使用了一个名为nt_startProcess
( 此处为文档)的function块,负责根据需要启动我的应用程序。
我的问题 – 两种不同的行为取决于操作系统:
-
从
cmd
行手动启动(不使用TwinCAT)时:我的应用程序在两个系统上都表现正常。 这意味着,应用程序启动,显示“Hello World”,然后返回到
cmd
行。 -
从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 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
这适用于窗口化应用程序,可能会强制关闭控制台窗口。