2013-09-16 3 views
1

TcpListener을 사용하여 특정 포트에서 연결을 수신하는 콘솔 응용 프로그램이 있습니다. 나는 TcpListener을 시작하지만 내 프로그램을 열면 콘솔이 즉시 존재합니다. 비동기식 작업을 수행하는 동안 어떻게 종료시키지 않을 수 있습니까?콘솔 응용 프로그램을 읽지 못합니까?

+0

을 나는 당신을 생각 귀하의 프로그램이 현재 어떻게 작동하는지 그리고 어떻게 행동을 바꾸고 싶은지 조금 더 설명해야합니다. –

답변

2

ManualResetEvent을 사용하면 응용 프로그램을 계속 사용할 수 있습니다. 다만, 하나를 만들어 그것을 기다린 응용 프로그램이 종료 할 때 비동기 코드에서 신호 : 마지막 문으로

static void Main(string[] args) 
{ 
    ManualResetEvent signal = new ManualResetEvent(false); 

    //start asynchronous work 
    //call signal.Set(); to close the application 

    signal.WaitOne(); 
} 
+0

내 말은 - 내 콘솔은 물건을하지만 즉시 존재하지만, 물건이 아직 끝났기 때문에 콘솔을 종료하고 싶지 않습니다. – user2714359

+0

@ user2714359 그러면 백그라운드 스레드에서 작업하고 전경 스레드가 작동하지 않는다는 것을 의미합니다. 포 그라운드 스레드에서 실제 작업을 수행하거나 배경 작업이 완료되기를 기다리는 하나 이상의 포 그라운드 스레드가 있어야합니다. – Servy

+0

사실이 아니어야합니다. 종료 할 때 무언가를하고 있는지 확인하십시오. – VahidNaderi

0

를 콘솔 응용 프로그램에 추가 :

System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); 
+1

응용 프로그램 *을 끝내기가 어렵습니다. 그는 그가 끝났을 때 응용 프로그램을 정상적으로 닫을 수 있기를 원합니다. 무엇이든지. – Servy

+0

오, 연결을 영원히 받아들이는 서버에 앉아있는 것 같았습니다. – aquinas

관련 문제