EventWaitHandle.TryOpenExisting 方法

定义

打开指定名称为同步事件(如果已经存在),并返回指示操作是否成功的值。

重载

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 是一个空字符串。

仅限 .NET Framework:name 的长度超过 MAX_PATH(260 个字符)。

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.SynchronizeEventWaitHandleRights.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可以使用 或 Local\ 作为Global\前缀,以指定命名空间。 Global指定命名空间后,可以与系统上的任何进程共享同步对象。 Local指定命名空间时(未指定命名空间时也是默认值),可以与同一会话中的进程共享同步对象。 在 Windows 上,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似于 Unix 的操作系统上,每个 shell 都有其自己的会话。 会话本地同步对象可能适合用于使用父/子关系(在这些进程都在同一会话中运行)之间进行同步。 有关 Windows 上的同步对象名称的详细信息,请参阅 对象名称

如果命名空间中存在所请求类型的同步对象,则会打开现有的同步对象。 如果命名空间中不存在同步对象,或者命名空间中存在不同类型的同步对象, false 则返回 。

若要在系统事件尚不存在时创建它,请使用具有 参数的 EventWaitHandle 构造函数之一 name

如果不确定是否存在命名的同步事件,请使用此方法重载,而不是 OpenExisting(String, EventWaitHandleRights) 方法重载,如果同步事件不存在,该方法将引发异常。

参数 rights 必须包含 EventWaitHandleRights.Synchronize 允许线程等待事件的标志,以及 EventWaitHandleRights.Modify 允许线程调用 SetReset 方法的标志。

对此方法使用相同值的 name 多次调用不一定返回相同的 EventWaitHandle 对象,即使返回的对象表示相同的命名系统事件。

适用于