Quote Originariamente inviata da Samaritan Visualizza il messaggio
nel mio caso il processo esterno che viene eseguito è un processo pesantissimo che fa delle elaborazioni complicatissime su segnali in arrivo da un radar x-band collegato al pc tramite una scheda proprietaria di acquisizione.
Questo non vuol dire assolutamente niente. Qui non centra cosa fa o usa il nuovo processo esterno.

Quote Originariamente inviata da Samaritan Visualizza il messaggio
Capirai quindi che quel exec se viene eseguito nell'edt può realmente creare seri problemi o addirittura blocchi nella gui stessa se qualcosa non dovesse andare correttamente
Ripeto che exec() è generalmente quasi immediato. Non centra se quello che lanci è un super-mega-programma che fa chissà che cosa per chissà quanto tempo ....

Quote Originariamente inviata da Samaritan Visualizza il messaggio
e comunque essendo un processo che non esce, ma resta in uno stato di elaborazione continua, credo che se non viene gestito in un altro thread non può che appesantire l'edt che si rallenterebbe o diventerebbe instabile.
Se devi aspettare il suo exit-code e/o gestire i suoi stream, sì, ovviamente questo non va fatto nel EDT.

Quote Originariamente inviata da Samaritan Visualizza il messaggio
In poche parole se invoco Runtime.exec senza farlo nel run di un nuovo Thread, per forza di cose quell'oggetto Process viene gestito nell'unico thread dell'edt
Te lo ripeto ancora una volta: exec() è veloce, non è certo questo che bloccherebbe in modo grave il EDT.
Sui sistemi Windows il exec() è sicuramente veloce, ne ho già avuto prova diverse volte. Sui sistemi Unix-like il concetto di "spawn" di un nuovo processo è un po' diverso rispetto ai Windows, quindi ci sono altre cose da considerare ma non credo, onestamente, che si possa parlare di "secondi" .... molto meno.