Dot-Net
NamedPipeServerStream 類中 maxNumberOfServerInstances 的用途是什麼?
目前在 .NET 中編寫 Windows 服務,我正在使用命名管道讓其他程序與我的服務進行通信。在更複雜的 NamedPipeServerStream 建構子中,有一個參數,其描述性名稱為 maxNumberOfServerInstances。驚人的。但是,這是什麼意思?
MSDN 的文件也有助於解釋:
共享相同名稱的伺服器實例的最大數量。
好的。這仍然不能真正告訴我這對我有什麼作用,或者我如何使用它。如果 NamedPipeServerStream 也接受了一些委託來“在我收到連接時執行此程式碼”是有意義的,那麼每個“伺服器實例”都會執行該程式碼。但事實並非如此。
實際上,它限制了
NamedPipeServerStream您可以為相同的管道名稱創建的實例數。這將拋出System.IO.IOException: All pipe instances are busy.:var pipeStreamA = new NamedPipeServerStream("mypipe1", PipeDirection.InOut, 1); var pipeStreamB = new NamedPipeServerStream("mypipe1", PipeDirection.InOut, 1);如果更改為 -1 或 2,則不會引發異常。此外,它僅尊重您創建的第一個實例的值。如果在第一次呼叫時指定 1,在第二次呼叫時指定 2,它仍然會拋出異常。
將其設置為您希望嘗試執行的最大同時伺服器數可能是一個好主意,因為正如 Hans 所提到的,它可能使用該數字作為要分配的資源量的提示。