Ho un problema di debug multithreading piuttosto serio. Ho qualche tipo di problema di temporizzazione quando interagisco con un dispositivo seriale, e ho bisogno di rintracciarlo. Ho tre thread:Debuging filettato in C# e vs2008
- Il thread principale per gli aggiornamenti dell'interfaccia utente. L'utente può cambiare un parametro del dispositivo, o molti contemporaneamente, scegliendo un preset.
- Il thread di controllo dello stato che richiede di verificare che il dispositivo sia ancora collegato. Se l'utente spegne il dispositivo o il dispositivo stesso viene interagito in modo interessante, i cambiamenti di stato devono riflettersi nell'interfaccia utente.
- Il thread che legge la porta seriale in cui il dispositivo risponde.
Il mio problema ha effettivamente a che fare con il debug di questa situazione. Sembra che ogni singola linea che ho in ogni thread debba avere un punto di interruzione per essere debugata; se interrompo un thread, il debugger non passerà attraverso quel thread. Capisco che gli altri thread continueranno ad aggiornare, ma il thread che sto eseguendo non dovrebbe essere normale nel debugger, cioè passare da una riga alla successiva? Quindi, potrei usare la scheda 'discussioni' per passare da un thread all'altro.
Ho detto che sono in WPF perché non so se questo cambierà la situazione; forse lo fa, forse no. Il thread di controllo dello stato fa parte di un controllo dell'interfaccia utente, poiché lo stato deve essere controllato solo mentre l'interfaccia utente è attiva. Questo controllo si trova in una libreria distinta dall'applicazione principale.
Rimosso i riferimenti WPF causano il fatto che non è realmente correlato a WPF - solo un debug di MT generico. –
Sfortunatamente, ho notato che vs2008 ha iniziato a comportarsi in modo molto, molto aggressivo (questo è solo un comportamento problema, altri hanno a che fare con il controllo del codice sorgente e con diverse impostazioni di build) che è accaduto da quando il progetto è migrato a WPF. Quindi l'inclusione, per ogni evenienza. – mmr