Sto sviluppando un'applicazione console
che dovrebbe funzionare con WinCE 6.0
e WinCE 7.0
. Sto usando C#
, Compact Framework 2.0
per diversi motivi di compatibilità.Applicazione console non in chiusura
La mia applicazione è avviata da un runtime esterno chiamato TwinCAT
(da Beckhoff). All'interno di questa applicazione, il mio compagno di squadra ha utilizzato un blocco funzione chiamato nt_startProcess
(documentazione here) che è responsabile dell'avvio dell'applicazione su richiesta.
Il mio problema - due comportamenti diversi a seconda del sistema operativo:
Quando avviato manualmente (senza TwinCAT) da una linea di
cmd
:La mia applicazione si comporta correttamente su entrambi i sistemi. Significa che, l'avvio delle applicazioni, visualizza "Hello World" e quindi torna alla riga
cmd
., quando lanciato da TwinCAT:
a) Sulla
WinCE 6.0
, posso vedere un'apertura linea di cmd, la visualizzazione di "Ciao Mondo" e chiudendo in sé subito dopo. Comportamento perfetto per me.b) Sul
WinCE 7.0
, posso vedere un'apertura della linea cmd, che mostra "Hello World" ma rimane aperto per sempre. Questo è il mio problema!
Codice frammento:
using System;
using System.Collections.Generic;
using System.Text;
namespace MyBasicExample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
informazioni Compilation
In Visual Studio 2008, all'interno delle proprietà della compilazione del progetto:
- Platefor m obiettivo: Qualsiasi CPU
nota Aggiuntivo:
Si prega di notare che il computer che è in esecuzione WinCE 6.0 utilizza un processore i486 mentre quello in esecuzione WinCE 7.0 utilizza un processo di Freescale ArmCortex.
WinCE 6.0:
WinCE 7.0:
Quello che ho provato:
1) Utilizzando return 0;
al termine di applicazione.
Non modifica nulla su WinCE 7.0.
2) Utilizzando Environment.Exit(0);
non è disponibile in Compact Framework 2.0.
3) Usando la proprietà: IsBackground
Snippet:
// ... Same snippet as above except for the next line...
Thread.CurrentThread.IsBackground = true;
Console.WriteLine("Hello World");
// ...
4) Da TwinCAT, chiamando un file batch (che chiama il mio exe) invece del mio exe.
Non funziona con TwinCAT. Viene visualizzato un errore di tipo "Errore generale sotto-Windows".
5) Testato con Compact Framework 3.5.
Stesso comportamento.
6) Testato con un altro computer CX (modello 2020) che utilizza Windows CE 7.0 e un'altra architettura di processore (Intel Pentium III Xeon Modello A).
Stesso comportamento.
provato Environment.Exit (0)? – Chaka
@Chaka Non ci ho pensato. Ho provato a restituire 0; senza molto successo ... Ci stiamo provando proprio ora. –
@Chaka Non riesco ad avere il metodo Exit in Compact framework 2.0. –