EventWaitHandleAcl.Create 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或创建 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
当此方法返回时,如果创建了本地事件(即,当 name
为 null
或 Empty 时),则此参数始终设置为 true
。 如果 name
具有有效的非空值,则在创建系统事件时,此参数设置为 true
;如果找到具有该名称的现有系统事件,则此参数设置为 false
。
- eventSecurity
- EventWaitHandleSecurity
要应用的可选 Windows 访问控制安全性。
返回
一个对象,它表示请求的事件等待句柄。
例外
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 。 避免在可能有不受信任的用户运行代码的系统上使用没有访问限制的命名事件。