EventWaitHandle.TryOpenExisting 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。
多載
TryOpenExisting(String, EventWaitHandle) |
開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。 |
TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) |
使用所需的安全性存取權,開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。 |
TryOpenExisting(String, EventWaitHandle)
開啟指定的具名同步處理事件 (如果已經存在),並傳回值,指出作業是否成功。
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
上所宣告的預設值是 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 旗標可讓線程呼叫 Set 和 Reset 方法。
對這個方法使用相同值的 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
上所宣告的預設值是 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 允許線程呼叫 Set 和 Reset 方法的旗標。
對這個方法使用相同值的 name
多個呼叫不一定傳回相同的 EventWaitHandle 物件,即使傳回的物件代表相同的具名系統事件也一樣。