EventWaitHandle.TryOpenExisting 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
打开指定名称为同步事件(如果已经存在),并返回指示操作是否成功的值。
重载
TryOpenExisting(String, EventWaitHandle) |
打开指定的命名同步事件(如果已经存在),返回指示操作是否成功的值。 |
TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) |
使用所需的安全访问权限,打开指定的命名同步事件(如果已经存在),并返回指示操作是否成功的值。 |
TryOpenExisting(String, EventWaitHandle)
- Source:
- EventWaitHandle.cs
- Source:
- EventWaitHandle.cs
- Source:
- 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
上声明的默认值为 null
。
name
无效。 导致这种情况的原因有很多,包括操作系统可能会施加的一些限制,例如未知前缀或无效字符。 请注意,名称和通用前缀“Global\”和“Local\”区分大小写。 对于某些无效名称,该方法可能返回 false
。
或
还有一些其他错误。
HResult
属性可能提供更多信息。
name
太长。 长度限制可能取决于操作系统或配置。
命名事件存在,但用户不具有所需的安全访问权限。
注解
name
可以使用 或 Local\
作为Global\
前缀,以指定命名空间。
Global
指定命名空间后,可以与系统上的任何进程共享同步对象。
Local
指定命名空间时(未指定命名空间时也是默认值),可以与同一会话中的进程共享同步对象。 在 Windows 上,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似于 Unix 的操作系统上,每个 shell 都有其自己的会话。 会话本地同步对象可能适合用于使用父/子关系(在这些进程都在同一会话中运行)之间进行同步。 有关 Windows 上的同步对象名称的详细信息,请参阅 对象名称。
如果命名空间中存在所请求类型的同步对象,则会打开现有的同步对象。 如果命名空间中不存在同步对象,或者命名空间中存在不同类型的同步对象, false
则返回 。
若要在系统事件尚不存在时创建它,请使用具有 参数的 EventWaitHandle 构造函数之一 name
。
如果不确定是否存在命名的同步事件,请使用此方法重载,而不是 OpenExisting(String) 方法重载,如果同步事件不存在,该方法将引发异常。
此方法重载等效于调用 TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) 方法重载,并使用按位 OR 操作来指定 EventWaitHandleRights.Synchronize 和 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
可以使用 或 Local\
作为Global\
前缀,以指定命名空间。
Global
指定命名空间后,可以与系统上的任何进程共享同步对象。
Local
指定命名空间时(未指定命名空间时也是默认值),可以与同一会话中的进程共享同步对象。 在 Windows 上,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似于 Unix 的操作系统上,每个 shell 都有其自己的会话。 会话本地同步对象可能适合用于使用父/子关系(在这些进程都在同一会话中运行)之间进行同步。 有关 Windows 上的同步对象名称的详细信息,请参阅 对象名称。
如果命名空间中存在所请求类型的同步对象,则会打开现有的同步对象。 如果命名空间中不存在同步对象,或者命名空间中存在不同类型的同步对象, false
则返回 。
若要在系统事件尚不存在时创建它,请使用具有 参数的 EventWaitHandle 构造函数之一 name
。
如果不确定是否存在命名的同步事件,请使用此方法重载,而不是 OpenExisting(String, EventWaitHandleRights) 方法重载,如果同步事件不存在,该方法将引发异常。
参数 rights
必须包含 EventWaitHandleRights.Synchronize 允许线程等待事件的标志,以及 EventWaitHandleRights.Modify 允许线程调用 Set 和 Reset 方法的标志。
对此方法使用相同值的 name
多次调用不一定返回相同的 EventWaitHandle 对象,即使返回的对象表示相同的命名系统事件。