EventWaitHandle.TryOpenExisting 方法

定義

開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。

多載

TryOpenExisting(String, EventWaitHandle)

開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

使用所需的安全性存取權,開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。

TryOpenExisting(String, EventWaitHandle)

來源:
EventWaitHandle.cs
來源:
EventWaitHandle.cs
來源:
EventWaitHandle.cs

開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。

public:
 static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * EventWaitHandle -> bool
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member TryOpenExisting : string * EventWaitHandle -> bool
static member TryOpenExisting : string * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As EventWaitHandle) As Boolean

參數

name
String

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

result
EventWaitHandle

這個方法傳回時,如果呼叫成功,則包含 EventWaitHandle 物件,此物件代表具名同步處理事件,如果呼叫失敗,則為 null 。 這個參數會被視為未初始化。

傳回

如果已成功開啟具名同步處理事件,則為 true;否則為 false。 在某些情況下,可能會因為名稱無效而傳回 false

屬性

例外狀況

name 為空字串。

-或-

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

name 上所宣告的預設值是 null

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

-或-

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

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

具名事件存在,但使用者沒有所需的安全性存取權。

備註

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

如果命名空間中存在要求的同步處理物件,則會開啟現有的同步處理物件。 如果命名空間中不存在同步處理物件,或命名空間中存在不同類型的同步處理物件, false 則會傳回 。

若要在系統事件不存在時建立系統事件,請使用其中一個 name 具有 參數的 EventWaitHandle 建構函式。

如果您不確定具名同步處理事件是否存在,請使用這個方法多載,而不是 OpenExisting(String) 方法多載,如果同步處理事件不存在,就會擲回例外狀況。

這個方法多載相當於呼叫 TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) 方法多載,並使用 EventWaitHandleRights.Synchronize 位 OR 運算來指定 和 EventWaitHandleRights.Modify 許可權。 指定 EventWaitHandleRights.Synchronize 旗標可讓執行緒在具名系統事件上等候,而指定 EventWaitHandleRights.Modify 旗標可讓執行緒呼叫 SetReset 方法。

對這個方法使用相同值的 name 多個呼叫不一定傳回相同的 EventWaitHandle 物件,即使傳回的物件代表相同的具名系統事件也一樣。

適用於

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

使用所需的安全性存取權,開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。

public:
 static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::EventWaitHandleRights rights, [Runtime::InteropServices::Out] System::Threading::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, System.Security.AccessControl.EventWaitHandleRights rights, out System.Threading.EventWaitHandle result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.EventWaitHandleRights * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, rights As EventWaitHandleRights, ByRef result As EventWaitHandle) As Boolean

參數

name
String

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

rights
EventWaitHandleRights

列舉值的位元組合,表示所需的安全性存取。

result
EventWaitHandle

這個方法傳回時,如果呼叫成功,則包含 EventWaitHandle 物件,此物件代表具名同步處理事件,如果呼叫失敗,則為 null 。 這個參數會被視為未初始化。

傳回

如果已成功開啟具名同步處理事件,則為 true;否則為 false。 在某些情況下,可能會因為名稱無效而傳回 false

屬性

例外狀況

name 為空字串。

-或-

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

name 上所宣告的預設值是 null

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

-或-

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

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

具名事件存在,但使用者沒有所需的安全性存取權。

備註

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

如果命名空間中存在要求的同步處理物件,則會開啟現有的同步處理物件。 如果命名空間中不存在同步處理物件,或命名空間中存在不同類型的同步處理物件, false 則會傳回 。

若要在系統事件不存在時建立系統事件,請使用其中一個 name 具有 參數的 EventWaitHandle 建構函式。

如果您不確定具名同步處理事件是否存在,請使用這個方法多載,而不是 OpenExisting(String, EventWaitHandleRights) 方法多載,如果同步處理事件不存在,就會擲回例外狀況。

參數 rights 必須包含 EventWaitHandleRights.Synchronize 旗標,以允許執行緒等候事件,以及 EventWaitHandleRights.Modify 允許執行緒呼叫 SetReset 方法的旗標。

對這個方法使用相同值的 name 多個呼叫不一定傳回相同的 EventWaitHandle 物件,即使傳回的物件代表相同的具名系統事件也一樣。

適用於