我創建了一個Windows服務,它有一個組件監聽命名管道與用戶空間運行的程序進行交互。我已經使用this answer的代碼作爲多線程服務器實現的基礎,但是,我從下面轉載的緊密循環中調用ProcessNextClient操作獲得了強大的代碼味道。是否真的沒有更好的方法來知道何時將另一個流的開放添加到命名管道而不是重複捕獲IOException並再次嘗試?C#中的多線程服務器實現
public void ProcessNextClient()
{
try
{
NamedPipeServerStream pipeStream = new NamedPipeServerStream(PipeName, PipeDirection.InOut, 254);
pipeStream.WaitForConnection();
//Spawn a new thread for each request and continue waiting
Thread t = new Thread(ProcessClientThread);
t.Start(pipeStream);
}
catch (Exception e)
{//If there are no more avail connections (254 is in use already) then just keep looping until one is avail
}
}
我在找什麼,我想是:一種方法來跟蹤仍然活動的線程/任務的數量,從而有開放的管道;或者阻止新的NamedPipeServerStream,直到資源可用而不創建螺旋鎖。 – psaxton 2013-03-27 18:54:44