L'avvio di un nuovo thread, da solo, non causa il blocco o il blocco del thread corrente. Il sistema operativo pianifica questi thread (insieme a molti altri thread) per eseguire l'esecuzione del turno.
Se la prima applicazione avvia la seconda applicazione come processo, tramite System.Diagnostics.Process
, anche questo non causa la sospensione o il blocco del processo o del thread corrente. I thread che girano in queste due applicazioni (processi) eseguiranno anche l'esecuzione del turno.
In altre parole, se qualcosa dorme mai o si blocca, è dovuto al tuo codice, o è dovuto al "blocco dell'I / O" in cui alcune operazioni di input / output sono state eseguite in un modo che non riprende l'esecuzione fino a quando l'operazione è completata. Il blocco degli I / O bloccherà solo il thread su cui viene eseguito.
Se a un'applicazione viene assegnato il privilegio di amministratore del sistema operativo, è possibile emettere alcuni comandi speciali del sistema operativo per bloccare forzatamente un altro processo o thread. Questo è un argomento avanzato e in genere non si riscontra nello sviluppo tipico del software.
Per ottenere una visione di processi e thread, puoi provare l'utilità "Explorer Process SysInternals" . Tuttavia, devo avvertirti che se usi impropriamente questa utility (ad esempio, interrompendo in modo casuale applicazioni o thread) può causare operazioni software anormali, corruzioni di dati o persino far funzionare il tuo computer, richiedendo una riparazione.