2013-09-16 47 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

相關問題