Sfondo: ho un Net 3.5 WPF "Prism" applicazione basata su esecuzione su Windows XP e Windows POSReady 2009 PC. L'app viene eseguita su PC che vengono spenti ogni notte (tramite una chiamata C# a "shutdown.exe") e avviati di nuovo al mattino (tramite Wake-on-LAN). L'applicazione è basata su touch (tramite touch screen ELO), non sono collegati mouse o tastiere e gli utenti non hanno accesso a Windows.WPF Errori applicazione e .NET Framework Riparazioni
Problema: Abbiamo sporadicamente vediamo problemi in cui una delle due cose accade; l'applicazione non sembra caricarsi correttamente e vediamo un modulo bianco vuoto che mostra o smette di rispondere al tocco. Dalla ricerca nei nostri log (log4net) possiamo vedere che stiamo ancora gestendo gli eventi touch e li abbiamo registrati in entrambi i casi. Spesso questo sembra accadere quando si cambiano le viste e vediamo anche nei registri in cui il Prisma RegionManager sta rimuovendo e aggiungendo le viste in modo appropriato.
Risoluzione dei problemi: L'applicazione è in esecuzione su circa ~ 100 PC che utilizzano le immagini applicate con Clonezilla e questo si verifica solo sporadicamente. Dal momento che non sta accadendo su tutti i PC e non ci sono eccezioni registrate o qualcosa di indicativo di un problema nel Visualizzatore eventi, abbiamo fatto ricorso a più correzioni a livello di PC e OS. Nello specifico, abbiamo provato a riavviare l'applicazione e il PC con un successo occasionale a breve termine, il che significa che a volte l'applicazione funzionerà correttamente dopo questi riavvii, ma solo per una questione di ore al massimo. Abbiamo anche lavorato partendo dal presupposto che l'applicazione è stata in qualche modo danneggiata e che abbiamo rimosso e reinstallato, senza successo.
L'unica cosa che sembra risolvere il problema è una riparazione del framework .Net utilizzando il pacchetto .Net 3.5 SP1 Installer fornito.
Conclusione: Dal momento che questo sembra risolvere il problema quando niente altro lo fa, sembra che stiamo in qualche modo corrompere una dll quadro GAC'd - sia attraverso il codice o le procedure di avvio/arresto sul PC.
Domande: Questo porta ad una serie di domande:
- qualche idea su come possiamo identificare ulteriormente la fonte del problema?
- Qualche idea su cosa possiamo fare per prevenire questo problema?
- Qualche idea su quale potrebbe essere il problema di fondo?
Grazie per qualsiasi aiuto.
Difficile dirlo .. hai qualche multithreading succedendo? Eventuali eventi generati da un thread diverso dalla GUI? – stmax
Ci sono diversi thread in un dato momento.Per lo più sono creati come oggetti BackgroundWorker, ma alcuni sono oggetti Thread esplicitamente creati con un ThreadStart. I lavoratori in genere hanno una durata breve (creare, eseguire una volta, distruggere) e i thread sono generalmente di lunga durata (dall'avvio per tutta la durata dell'applicazione). Gli eventi di aggregazione dei prismi vengono generati nel thread della GUI. –
Queste macchine dispongono di un qualsiasi tipo di hardware per unità a stato solido o sono tutte in esecuzione con dischi rigidi economici? Ahia. –