語言

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

-或-

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

name 無效。 這可能有各種原因,包括作業系統可能施加的一些限制,例如未知的前綴或無效字元。 請注意,名稱及常見前綴「Global\」與「Local\」皆為大小寫區分。

-或-

還有其他錯誤。 HResult該物業可能會提供更多資訊。

Windows 僅有:name 指定了一個未知命名空間。 更多資訊請參閱 物件名稱

name太長了。 長度限制可能依作業系統或設定而異。

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

備註

可以name以 或 Global\ 作為前綴Local\,以指定命名空間。 當 Global 命名空間被指定時,同步物件可以與系統上的任何程序共享。 當 Local 指定命名空間時(這也是未指定命名空間時的預設),同步物件可能會與同一會話中的程序共享。 在 Windows 上,會話是登入會話,服務通常在不同的非互動會話中執行。 在類 Unix 作業系統中,每個 shell 都有自己的會話。 會話本地同步物件可能適合在具有父/子關係且所有程序都在同一會話中執行的程序間同步。 欲了解更多關於Windows同步物件名稱的資訊,請參見 Object Names

如果提供 a name ,且該命名空間中已有該請求類型的同步物件,則會開啟該現有的同步物件。 如果命名空間中已有不同類型的同步物件,則會拋出 a WaitHandleCannotBeOpenedException 。 否則,會建立一個新的同步物件。

注意事項

預設情況下,命名的信號量不限於創建它的使用者。 其他使用者可能能夠開啟並使用信號旗,包括多次取得信號旗卻不釋放來干擾信號量。 要限制特定使用者的存取,你可以在建立命名信號旗時傳遞 a SemaphoreSecurity 。 避免在可能有不受信任使用者執行程式碼的系統中使用無存取限制的命名信號量。

適用於