La mia applicazione C# .NET fa attualmente i seguenti (tra le altre cose):socket non si chiude dopo chiusura dell'applicazione se un processo avviato è aperta
- crea un thread che si apre un socket su una porta specifica e aspetta un'istruzione
- Il messaggio arriva, il thread di socket legge il messaggio e genera un evento.
- Un gestore eventi chiama le funzioni necessarie per analizzare il messaggio ed esegue l'azione necessaria, ad esempio avviando un'applicazione.
- L''"applicazione" esterna specificata viene avviata in modo asincrono.
Quando la mia applicazione si riavvia, ma l'applicazione esterna non si chiude, il socket sembra non chiudersi mai. Quindi quando provo ad avviare la comunicazione su quella porta, ricevo un errore. Tuttavia, non appena chiudo l'applicazione esterna riesco ad aprire un socket su quella porta.
Sembra che il mio programma non si chiuda correttamente. Dovrebbe essere uccidere il socket quando esce, tuttavia quando il processo esterno è in esecuzione, quel socket non si chiude mai.
Qualche idea?
Si sta smaltendo la presa? –
Come stai gestendo il processo esterno? Si prega di inviare un po 'di codice. – zmbq
@ M.Babcock Sì, sto chiudendo il socket e ho verificato che il codice venga eseguito quando l'interfaccia utente è chiusa. Sto usando un TcpClient e un TcpListener. Il client viene "chiuso" e l'ascoltatore viene "fermato". Tuttavia, questo non sembra liberare la porta. – JSideris