我正在开发一个应该在console
和WinCE 6.0
下运行的WinCE 7.0
应用程序。我出于不同的兼容性原因使用C#
,Compact Framework 2.0
。
我的应用程序由名为TwinCAT
的外部运行时启动(来自Beckhoff)。在这个应用程序中,我的队友使用了一个名为nt_startProcess
的功能块(文档here),负责按需启动我的应用程序。
我的问题 - 两种不同的行为取决于操作系统:
从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中,在项目编辑的属性中:
附加说明:
请注意,运行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。我收到类型"一般子Windows错误"。
的错误5)使用Compact Framework 3.5进行测试。
同样的行为。
6)使用Windows CE 7.0和另一种处理器架构(Intel Pentium III Xeon Model A)测试另一台CX计算机(型号2020)。
同样的行为。
答案 0 :(得分:1)
试试这段代码:
Environment.Exit(0);
答案 1 :(得分:0)
您是否将{em> .exe 文件放在Arguments
的{{1}}属性中?
如果您必须这样做,我相信您已在ProcessStartInfo
媒体资源中使用 CMD ,因此您必须在 .exe FileName >名字。
或者只需输入/K
.exe 路径即可。
如果你把代码调用你的应用程序,你可以澄清很多。
答案 2 :(得分:0)
尝试拨打Application.Exit
这适用于窗口化应用程序,可能会强制关闭控制台窗口。
答案 3 :(得分:0)
尝试一下:
工具>选项>调试>调试停止时自动关闭控制台
答案 4 :(得分:0)
我有完全一样的问题。在Beckhoff PLC上运行的控制台应用程序从未关闭。
我创建Windows应用程序,而不是创建控制台应用程序。 我的代码与控制台应用程序相同。我刚刚注释掉了:
// Application.Run(new Form1());
现在看来,代码运行时无需打开表单。