Pracuję nad aplikacją console
, która ma działać pod WinCE 6.0
i WinCE 7.0
. Używam C#
, Compact Framework 2.0
dla różnych powodów kompatybilności.Aplikacja konsoli nie zamyka się
Moja aplikacja jest uruchamiana przez zewnętrzny program wykonawczy o nazwie TwinCAT
(od Beckhoff). W ramach tej aplikacji mój członek zespołu użył bloku funkcyjnego o nazwie nt_startProcess
(dokumentacja here), który jest odpowiedzialny za uruchamianie mojej aplikacji na żądanie.
Mój problem - Dwie różne zachowania w zależności od systemu operacyjnego:
Kiedy uruchamiane ręcznie (bez TwinCAT) z
cmd
linii:Moja aplikacja zachowuje się poprawnie w obu systemach. Oznacza to, że aplikacje rozpoczynają się, wyświetla "Hello World", a następnie wraca do linii
cmd
.Kiedy zaczęło się od TwinCAT:
a) Na
WinCE 6.0
widzę otwór linii cmd, wyświetlanie "Hello World" i zamyka się zaraz po. Idealne zachowanie dla mnie.b) Na
WinCE 7.0
widzę otwór linii CMD, wyświetlający "Hello World", ale pozostaje otwarty na zawsze. To jest mój problem! Fragment
Kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace MyBasicExample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
informacje Kompilacja
w Visual Studio 2008, w ramach właściwości kompilacji projektu:
- Platefor m cel: Każdy CPU
źródło dodatkowego uwaga:
Należy pamiętać, że komputer, który działa WinCE 6.0 jest za pomocą procesora i486, gdy jeden pracuje WinCE 7.0 jest za pomocą procesu Freescale ArmCortex.
WinCE 6.0:
WinCE 7.0:
Co próbowałem:
1) Korzystanie return 0;
po zakończeniu aplikacji.
Nic nie zmienia w WinCE 7.0.
2) Korzystanie Environment.Exit(0);
nie jest dostępny w Compact Framework 2.0.
3) Korzystanie z własności: IsBackground
Snippet:
// ... Same snippet as above except for the next line...
Thread.CurrentThread.IsBackground = true;
Console.WriteLine("Hello World");
// ...
4) z TwinCAT, nazywając plik wsadowy (co wywołuje mój EXE) zamiast mojego exe.
Nie działa z TwinCAT. Pojawia się błąd typu "Ogólny błąd podrzędny pod systemem Windows".
5) Przetestowano za pomocą Compact Framework 3.5.
To samo zachowanie.
6) Przetestowano z innym komputerem CX (model 2020) przy użyciu Windows CE 7.0 i innej architektury procesora (Intel Pentium III Xeon Model A).
To samo zachowanie.
próbował Environment.Exit (0)? – Chaka
@Chaka Nie myślałem o tym. Próbowałem powrotu 0; bez większego sukcesu ... Próbujemy tego teraz. –
@Chaka Nie mogę mieć metody Exit w Compact 2.0. –