내 C# .NET 응용 프로그램이 현재 수행하는 (무엇보다도) 다음 소켓 응용 프로그램이 종료 후 닫히지 않습니다
- 가 특정 포트에 소켓을 여는 스레드를 생성 및 지시를 기다린다.
- 메시지가 들어 오면 소켓 스레드는 메시지를 읽고 이벤트를 발생시킵니다.
- 이벤트 처리기는 메시지를 구문 분석하는 데 필요한 함수를 호출하고 응용 프로그램 시작과 같은 필요한 작업을 수행합니다.
- 지정된 외부 "응용 프로그램"이 비동기 적으로 시작됩니다.
응용 프로그램을 다시 시작했지만 외부 응용 프로그램이 닫히지 않으면 소켓이 닫히지 않는 것 같습니다. 그런 다음 해당 포트에서 다시 통신을 시작하려고하면 오류가 발생합니다. 그러나 외부 응용 프로그램을 닫으면 해당 포트에서 소켓을 열 수 있습니다.
내 프로그램이 제대로 종료되지 않는 것 같습니다. 종료 할 때 소켓을 종료해야하지만 외부 프로세스가 실행 중일 때 소켓이 닫히지 않아야합니다.
아이디어가 있으십니까? 당신은 다른 응용 프로그램에서 모든 소켓을 사용 않음 사용하여 키워드
using (Socket socket = new Socket()) {
//The code
}
으로이 문제를 해결 할 수있을 것
소켓을 폐기 하시겠습니까? –
외부 프로세스는 어떻게 실행하고 있습니까? 몇 가지 코드를 게시하십시오. – zmbq
@ M.Babcock 예 소켓을 닫고 UI가 닫힐 때 코드가 실행되고 있는지 확인했습니다. 나는 TcpClient와 TcpListener를 사용하고있다. 클라이언트가 "닫혀"있고 청취자가 "중지됨"입니다. 그러나 이것은 포트를 비우지 않는 것처럼 보입니다. – JSideris