Quote Originariamente inviata da Samaritan Visualizza il messaggio
se la lettura degli InputStream dell'oggeto Process fosse una opzione oppure un obbligo.
Proprio "obbligo" no. Nel senso che se tu sai che il processo non fa assolutamente output o se di per sé può farne ma l'hai avviato con una qualche sua opzione che lo rende "quiet" (silenzioso) .... allora non è veramente necessario leggere gli stream di Process.

Quote Originariamente inviata da Samaritan Visualizza il messaggio
Ma se tu mi scrivi che già internamente l'utilizzo di Runtime.exec crea di suo un nuovo thread
exec non crea alcun thread! Semplicemente la richiesta al sistema di avviare un nuovo processo è una cosa che richiede frazioni di un secondo .... non secondi o minuti.

Quote Originariamente inviata da Samaritan Visualizza il messaggio
Mi confermi quindi che è fondamentale che io legga l'inputstream e l'errorstream del processo e provveda sempre a chiudere questi stream ad ogni ciclo di invocazione dell'eseguibile esterno in modo da liberare tutte le risorse utilizzate da questi stream del processo e scongiurare il rischio di dead-lock del'applicativo?
Se il processo fa "abbastanza" output su standard-output e/o standard-error, ripeto che gli stream di Process vanno letti.
Per sapere se il processo fa dell'output, documentati se ha una documentazione o comunque provalo "a mano" da una console.