MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或创建 Mutex 实例,允许在创建互斥体期间选择性地指定 MutexSecurity 来设置该实例。
public:
static System::Threading::Mutex ^ Create(bool initiallyOwned, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::MutexSecurity ^ mutexSecurity);
public static System.Threading.Mutex Create (bool initiallyOwned, string? name, out bool createdNew, System.Security.AccessControl.MutexSecurity? mutexSecurity);
static member Create : bool * string * bool * System.Security.AccessControl.MutexSecurity -> System.Threading.Mutex
Public Shared Function Create (initiallyOwned As Boolean, name As String, ByRef createdNew As Boolean, mutexSecurity As MutexSecurity) As Mutex
参数
- initiallyOwned
- Boolean
如果为 true
,则给予调用线程已命名的系统互斥体的初始所属权(如果已命名的系统互斥体是通过此调用创建的);否则为 false
。
- name
- String
如果要与其他进程共享同步对象,则为名称;否则为 null
或空字符串。 该名称区分大小写。 反斜杠字符 (\) 是保留的,只能用于指定命名空间。 有关命名空间的详细信息,请参阅备注部分。 根据操作系统,名称可能会有进一步的限制。 例如,在基于 Unix 的操作系统上,排除命名空间后的名称必须是有效的文件名。
- createdNew
- Boolean
当此方法返回时,如果创建了本地互斥体(即,当 name
为 null
或 Empty 时),则此参数始终设置为 true
。 如果 name
具有有效的非空值,则在创建系统互斥体时,此参数设置为 true
;如果找到具有该名称的现有系统互斥体,则此参数设置为 false
。 此参数未经初始化即被传递。
- mutexSecurity
- MutexSecurity
要应用的可选互斥体访问控制安全性。
返回
表示系统互斥体(如果已命名)或本地互斥体(如果未命名)的对象。
例外
仅限 .NET Framework:name
的长度超过 MAX_PATH(260 个字符)。
name
无效。 导致这种情况的原因有很多,包括操作系统可能会施加的一些限制,例如未知前缀或无效字符。 请注意,名称和常见前缀“Global\”和“Local\”区分大小写。
或
还有其他一些错误。
HResult
属性可能提供更多信息。
仅限 Windows:name
指定了未知命名空间。 有关详细信息,请参阅对象名称。
name
太长。 长度限制可能取决于操作系统或配置。
无法创建具有提供的 name
的同步对象。 不同类型的同步对象可能具有相同的名称。
注解
name
可以使用 或 Local\
作为前缀Global\
来指定命名空间。
Global
指定命名空间后,可以与系统上的任何进程共享同步对象。 如果指定了 Local
命名空间(如果未指定命名空间,这也是默认命名空间),则同步对象可以与同一会话中的进程共享。 在 Windows 上,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似 Unix 的操作系统上,每个 shell 都有自己的会话。 会话本地同步对象可能适合在具有父/子关系的进程之间进行同步,这些进程都在同一会话中运行。 有关 Windows 上的同步对象名称的详细信息,请参阅 对象名称。
如果提供了 , name
并且命名空间中已存在请求类型的同步对象,则会打开现有的同步对象。 如果命名空间中已存在不同类型的同步对象, WaitHandleCannotBeOpenedException
则会引发 。 否则,将创建新的同步对象。
注意
默认情况下,命名互斥体不限于创建它的用户。 其他用户可能能够打开和使用互斥体,包括通过输入互斥体而不退出互斥来干扰互斥体。 若要限制对特定用户的访问,可以在创建命名互斥体时传入 MutexSecurity 。 避免在可能有不受信任的用户运行代码的系统上使用没有访问限制的命名互斥体。