C # ShowDialog () non blocca il modulo principale quando viene triggersto dal thread

Ho un’applicazione Windows Form con un modulo principale e diversi thread in background. Per mostrare messaggi “carini” ho implementato un modulo per essere mostrato come una finestra di dialogo modale usando ShowDialog() .

Tutte le chiamate a ShowDialog() vengono implementate a livello di modulo del modulo principale (e non a livello di thread), ma a volte viene triggersto un evento da un thread che verrà gestito a livello di modulo del modulo principale. In questi casi, la finestra di dialogo non è più modale … la forma principale non è bloccata. Quando la chiamata a ShowDialog() non viene triggersta da un thread, è modale come richiesto.

Come posso assicurarmi che ogni chiamata a ShowDialog () blocchi il modulo principale?

Come posso assicurarmi che ogni chiamata a ShowDialog() blocchi il modulo principale?

Esegui le chiamate a ShowDialog() sul thread principale. Se è necessario richiamarli da un thread diverso, utilizzare Invoke() per eseguirli sul thread principale.