SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或建立 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
(意即當 name
為 null
或 Empty 時)。 如果 name
具有非空白的有效值,則此引數會在建立系統旗號時設定為 true
;如果找到具有該名稱的現有系統旗號時,則會設定為 false
。 這個參數會以未初始化的狀態傳遞。
- semaphoreSecurity
- SemaphoreSecurity
要套用的選擇性旗號存取控制安全性。
傳回
若物件已命名,則代表系統旗號;若物件未命名,則代表本機旗號。
例外狀況
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 。 避免在執行程式代碼的系統上使用具名旗號,而不需存取限制。