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