Dot-Net

NamedPipeServerStream 類中 maxNumberOfServerInstances 的用途是什麼?

  • December 24, 2021

目前在 .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 所提到的,它可能使用該數字作為要分配的資源量的提示。

引用自:https://stackoverflow.com/questions/8820831