共用方式為


SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) 方法

定義

取得或建立 Semaphore 執行個體,允許在建立事件期間選擇性地指定 SemaphoreSecurity 執行個體以進行設定。

public:
 static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create (int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore

參數

initialCount
Int32

可以同時滿足之號誌要求的初始數目。

maximumCount
Int32

可以同時滿足之號誌要求的最大數目。

name
String

如果同步物件要與其他處理序共用,則為名稱;否則為 null 或空字串。 名稱區分大小寫。 反斜杠字元 (\) 是保留的,只能用來指定命名空間。 如需命名空間的詳細資訊,請參閱一節。 視操作系統而定,可能會進一步限制名稱。 例如,在 Unix 型作業系統上,排除命名空間之後的名稱必須是有效的檔名。

createdNew
Boolean

當此方法傳回時,如果已建立本機旗號,則此引數一律會設定為 true (意即當 namenullEmpty 時)。 如果 name 具有非空白的有效值,則此引數會在建立系統旗號時設定為 true;如果找到具有該名稱的現有系統旗號時,則會設定為 false。 這個參數會以未初始化的狀態傳遞。

semaphoreSecurity
SemaphoreSecurity

要套用的選擇性旗號存取控制安全性。

傳回

若物件已命名,則代表系統旗號;若物件未命名,則代表本機旗號。

例外狀況

initialCount 為負數。 -或-

maximumCount 不是正數。

initialCount 大於 maximumCount

-或-

僅限 .NET Framework:name 的長度超過 MAX_PATH (260 個字元)。

name 無效。 這可能基於數種原因,其中包括可能由作業系統設定的一些限制,例如未知前置詞或無效字元。 請注意,名稱和通用前置詞 「Global\」 和 「Local\」 會區分大小寫。

-或-

發生一些其他錯誤。 HResult 屬性可提供詳細資訊。

僅限 Windows:name 已指定未知命名空間。 請參閱物件名稱 \(英文\) 以取得詳細資訊。

name 太長。 長度限制可能會取決於作業系統或設定。

無法建立具有所提供 name 的同步物件。 不同類型的同步物件可能具有相同名稱。

備註

name前面可能會加上 Global\Local\ ,以指定命名空間。 Global指定命名空間時,同步處理物件可能會與系統上的任何進程共用。 Local指定命名空間時,這也是未指定命名空間時的預設值,同步處理物件可能會與相同會話中的進程共用。 在 Windows 上,會話是登入工作階段,服務通常會在不同的非互動式會話中執行。 在類似 Unix 的作業系統上,每個殼層都有自己的會話。 會話本機同步處理物件可能適用於在進程與父/子關聯性之間同步處理,其中它們全都在相同會話中執行。 如需 Windows 上同步處理物件名稱的詳細資訊,請參閱 物件名稱

name如果 已提供 ,且要求的型別同步處理物件已存在於命名空間中,則會開啟現有的同步處理物件。 如果命名空間中已經存在不同類型的同步處理物件, WaitHandleCannotBeOpenedException 則會擲回 。 否則,會建立新的同步處理物件。

警告

根據預設,具名旗號不限於建立它的使用者。 其他使用者可能能夠開啟和使用旗號,包括藉由取得信號多次而干擾旗號,而不會釋放旗號。 若要限制特定使用者的存取權,您可以在建立具名旗號時傳入 SemaphoreSecurity 。 避免在執行程式代碼的系統上使用具名旗號,而不需存取限制。

適用於