[英]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.