簡體   English   中英

如何在C#中的同一線程中偵聽standard in和套接字?

[英]How to listen to standard in and a socket on the same thread in C#?

我正在嘗試制作一個基於網絡控制台的應用程序,但是它需要能夠同時偵聽標准輸入和來自套接字的輸入。 在C ++中,我將使用posix select()函數執行此操作,但是在C#中,似乎等效的select函數僅用於套接字。 有沒有一種方法可以在不使用多個線程的情況下偵聽C#中的兩個輸入?

要等待多個輸入,您需要為每個輸入等待一個WaitHandle,然后調用靜態方法WaitHandle.WaitAny

但是另一個選擇是使用異步IO。 使用BeginXXXX開始讀取/接收操作。 在每種情況下,您都提供一個回調,該回調將在完成時執行。 啟動它們之后,您將等待一個監視對象,並在回調中向該監視對象發出脈沖以通知完成。 這是一種非常有效的多線程編程形式,但是您不必顯式啟動任何線程。

要獲取原始Stream作為標准輸入,請使用Console.OpenStandardInput

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM