C# 控制台应用程序未关闭
我正在开发一个C# 控制台应用程序未关闭,c#,.net,windows-ce,c#-2.0,twincat,C#,.net,Windows Ce,C# 2.0,Twincat,我正在开发一个控制台应用程序,应该在WinCE 6.0和WinCE 7.0下运行。出于不同的兼容性原因,我正在使用C#,compactframework2.0 我的应用程序由一个名为TwinCAT(来自Beckhoff)的外部运行时启动。在这个应用程序中,我的队友使用了一个名为nt\u startProcess(文档)的功能块,负责按需启动我的应用程序 我的问题-两种不同的行为取决于操作系统: 从cmd行手动启动时(无TwinCAT): 我的应用程序在两个系统上都能正常运行。这意味着,应用程序启
控制台
应用程序,应该在WinCE 6.0
和WinCE 7.0
下运行。出于不同的兼容性原因,我正在使用C#
,compactframework2.0
我的应用程序由一个名为TwinCAT
(来自Beckhoff)的外部运行时启动。在这个应用程序中,我的队友使用了一个名为nt\u startProcess
(文档)的功能块,负责按需启动我的应用程序
我的问题-两种不同的行为取决于操作系统:
cmd
行手动启动时(无TwinCAT):
我的应用程序在两个系统上都能正常运行。这意味着,应用程序启动,显示“Hello World”,然后返回到cmd
行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
using System;
using System.Collections.Generic;
using System.Text;
namespace MyBasicExample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
请注意,运行WinCE 6.0的计算机使用的是i486处理器,而运行WinCE 7.0的计算机使用的是飞思卡尔ArmCortex进程
WinCE 6.0:WinCE 7.0:
我的尝试: 1) 使用
返回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。我得到一个类型为“常规子窗口错误”的错误
5) 使用Compact Framework 3.5进行测试
同样的行为
6) 使用另一台使用Windows CE 7.0的CX计算机(2020型)和另一种处理器体系结构(英特尔奔腾III至强A型)进行测试
相同的行为。是否将.exe文件放入ProcessStartInfo
的Arguments
属性中?
如果必须这样做,我相信您在FileName
属性中使用了CMD,因此您必须在.exe名称之前使用/K
。
或者只需输入.exe路径。
如果输入调用应用程序的代码,您可以澄清很多问题。尝试调用应用程序。退出
这适用于窗口应用程序,可能会强制控制台窗口关闭。请尝试以下代码:
Environment.Exit(0);
试试这个:
工具>选项>调试>调试停止时自动关闭控制台我遇到了完全相同的问题。在Beckhoff PLC上运行从未关闭的控制台应用程序
我没有创建控制台应用程序,而是创建了Windows应用程序。
我的代码与控制台应用程序的代码相同。我刚才说:
// Application.Run(new Form1());
现在代码似乎在不打开表单的情况下运行。尝试了环境。退出(0)?@Chaka我没有想到这一点。我尝试返回0;没有多少成功。。。我们现在正在尝试。@Chaka我似乎无法在Compact framework 2.0中使用Exit方法。从未在WinCE上使用过,但在通用的“调试帽”打开的情况下,您是否能够在Arm上尝试WinCE 6,或在Intel上尝试WinCE 7,以查看问题是否与WinCE版本或平台有关?我不知道这会告诉你什么,但它可能会给人一个线索。我用WinCE7和Intel架构运行了一个测试。我也遇到同样的问题。所以你的问题来自操作系统。即使使用GUI应用程序(我的想法是将控制台重定向到文本框,并在GUI应用程序中模拟控制台应用程序),表单也会关闭,但过程不会结束。如果我从cmd启动我的应用程序(GUI或控制台,CF 2.0或3.5,应用程序。退出(0)
或返回0
),我必须ctrl+C
结束该过程。