Ответ 1
попробуйте этот код:
Environment.Exit(0);
Я разрабатываю приложение console
, которое должно работать под WinCE 6.0
и WinCE 7.0
. Я использую C#
, Compact Framework 2.0
для разных причин совместимости.
Мое приложение запускается внешним временем выполнения под названием TwinCAT
(от Beckhoff). В этом приложении мой партнер по команде использовал функциональный блок nt_startProcess
(документация здесь), который отвечает за запуск моего приложения по требованию.
Моя проблема - два разных поведения в зависимости от ОС:
При запуске вручную (без TwinCAT) из строки cmd
:
Мое приложение корректно работает в обеих системах. Это означает, что приложения запускаются, отображает "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. Я получаю сообщение об ошибке "Общая ошибка Sub-Windows".
5) Протестировано с Compact Framework 3.5.
То же поведение.
6) Протестировано другим компьютером CX (модель 2020) с использованием Windows CE 7.0 и другой процессорной архитектуры (Intel Pentium III Xeon Model A).
То же поведение.
попробуйте этот код:
Environment.Exit(0);
Вы помещаете файл .exe в Arguments
свойство ProcessStartInfo
?
Если вы должны это сделать, я считаю, что вы используете CMD в свойстве FileName
, поэтому вы должны использовать /K
перед вашим .exe именем.
Или просто введите FileName
путь .exe.
Вы можете прояснить многое, если вы поместите код, который вызывает ваше приложение.
Попробуйте позвонить Application.Exit
Это работает в оконных приложениях и может заставить закрыть окно консоли.
Я думаю, что у меня та же проблема с Wince 7.0. Я запускаю свое приложение csharp из диспетчера задач; после того, как мое приложение csharp нормально завершает работу, консоль остается активной. Таким образом, каждое приложение запускается, открывают дополнительную консоль.
Кто-нибудь нашел решение?