Share via


EventWaitHandleAcl.Create 方法

定义

获取或创建 EventWaitHandle 实例,允许在事件创建期间选择性地指定 EventWaitHandleSecurity 实例来设置该实例。

public:
 static System::Threading::EventWaitHandle ^ Create(bool initialState, System::Threading::EventResetMode mode, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::EventWaitHandleSecurity ^ eventSecurity);
public static System.Threading.EventWaitHandle Create (bool initialState, System.Threading.EventResetMode mode, string? name, out bool createdNew, System.Security.AccessControl.EventWaitHandleSecurity? eventSecurity);
static member Create : bool * System.Threading.EventResetMode * string * bool * System.Security.AccessControl.EventWaitHandleSecurity -> System.Threading.EventWaitHandle
Public Shared Function Create (initialState As Boolean, mode As EventResetMode, name As String, ByRef createdNew As Boolean, eventSecurity As EventWaitHandleSecurity) As EventWaitHandle

参数

initialState
Boolean

如果将命名事件作为此调用的结果创建时,将初始状态设置为通过信号通知,则为 true;如果将其设置为不通过信号通知,则为 false

mode
EventResetMode

其中一个枚举值,它确定是自动还是手动重置事件。

name
String

如果要与其他进程共享同步对象,则为名称;否则为 null 或空字符串。 该名称区分大小写。 反斜杠字符 (\) 是保留的,只能用于指定命名空间。 有关命名空间的详细信息,请参阅备注部分。 根据操作系统,名称可能会有进一步的限制。 例如,在基于 Unix 的操作系统上,排除命名空间后的名称必须是有效的文件名。

createdNew
Boolean

当此方法返回时,如果创建了本地事件(即,当 namenullEmpty 时),则此参数始终设置为 true。 如果 name 具有有效的非空值,则在创建系统事件时,此参数设置为 true;如果找到具有该名称的现有系统事件,则此参数设置为 false

eventSecurity
EventWaitHandleSecurity

要应用的可选 Windows 访问控制安全性。

返回

一个对象,它表示请求的事件等待句柄。

例外

mode 枚举值超出了合法范围。

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

mode 枚举值超出了合法范围。 在某些情况下,将改为引发 ArgumentException

name 无效。 导致这种情况的原因有很多,包括操作系统可能会施加的一些限制,例如未知前缀或无效字符。 请注意,名称和常见前缀“Global\”和“Local\”区分大小写。

还有其他一些错误。 HResult 属性可能提供更多信息。

仅限 Windows:name 指定了未知命名空间。 有关详细信息,请参阅对象名称

name 太长。 长度限制可能取决于操作系统或配置。

无法创建具有提供的 name 的同步对象。 不同类型的同步对象可能具有相同的名称。

命名事件存在,但用户不具有所需的安全访问权限。

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

注解

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

如果提供了 , name 并且命名空间中已存在请求类型的同步对象,则会打开现有的同步对象。 如果命名空间中已存在不同类型的同步对象, WaitHandleCannotBeOpenedException 则会引发 。 否则,将创建新的同步对象。

注意

默认情况下,命名事件不限于创建它的用户。 其他用户可能能够打开和使用事件,包括通过不当设置或重置事件来干扰事件。 若要限制对特定用户的访问,可以在创建命名事件时传入 EventWaitHandleSecurity 。 避免在可能有不受信任的用户运行代码的系统上使用没有访问限制的命名事件。

适用于