控制台应用程序未关闭

And*_*y M 18 .net c# windows-ce c#-2.0 twincat

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

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

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

  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");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编译信息

在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");
// ...
Run Code Online (Sandbox Code Playgroud)

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).

相同的行为.

Cav*_*rna 0

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