Recentemente ho provato a usare backgroundworker invece di thread "classici" e mi sto rendendo conto che sta causando, almeno per me, più problemi che soluzioni. Possiedo un backgroundworker che esegue una lettura sincrona (in questo caso da serialPort) e viene bloccato per circa 30 secondi in una riga di codice, quindi l'annullamento della sospensione non è la soluzione. Vedo che se l'applicazione viene chiusa a questo punto (con il pulsante croce e Application.Exit()) il processo mantiene zombie per sempre.Backgroundworker abortire
Ho bisogno di un modo per forzare l'interruzione o per interrompere il thread del backgroundworker.
ho trovato SerialPort.DataReceived per essere un po 'di confusione in CF, non so se l'impl è meglio in FF. Quello CF usa più thread di quanto ci si aspetterebbe, quindi attenzione. – Quibblesome
Quasi tentato di -1 per il commento su BackgroundWorker; è progettato per far rispettare alcuni standard e effettuare automaticamente il marshalling degli eventi sul thread dell'interfaccia utente, che sono validi motivi per il suo utilizzo; non capire il threading causerà problemi indipendentemente da dove tu vada. –
A meno che non ci sia un modo più semplice per sincronizzare con il thread dell'interfaccia utente da un thread normale ... – Glimpse