Mutex.TryOpenExisting 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。
重载
| 名称 | 说明 |
|---|---|
| TryOpenExisting(String, Mutex) |
打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。 |
| TryOpenExisting(String, MutexRights, Mutex) |
使用所需的安全访问打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。 |
| TryOpenExisting(String, NamedWaitHandleOptions, Mutex) |
打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。 如果选项仅设置为当前用户,则为调用用户验证对象的访问控制。 |
TryOpenExisting(String, Mutex)
- Source:
- Mutex.cs
- Source:
- Mutex.cs
- Source:
- Mutex.cs
- Source:
- Mutex.cs
- Source:
- Mutex.cs
打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。
public:
static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting(string name, out System.Threading.Mutex result);
public static bool TryOpenExisting(string name, out System.Threading.Mutex? result);
public static bool TryOpenExisting(string name, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * Mutex -> bool
static member TryOpenExisting : string * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As Mutex) As Boolean
参数
- name
- String
要与其他进程共享的同步对象的名称。 名称区分大小写。 反斜杠字符 (\) 是保留的,只能用于指定命名空间。 有关命名空间的详细信息,请参阅“备注”部分。 根据操作系统,名称可能会有进一步的限制。 例如,在基于 Unix 的操作系统上,排除命名空间后的名称必须是有效的文件名。
返回
true 如果已成功打开命名的互斥体,则为 ;否则,为 false. 在某些情况下, false 可能会返回无效名称。
- 属性
例外
name 是 null。
name 无效。 这可能是出于各种原因,包括操作系统可能放置的一些限制,例如未知前缀或无效字符。 请注意,名称和通用前缀“Global\”和“Local\”区分大小写。 对于某些无效的名称,该方法可能会改为返回 false 。
-或-
还有其他一些错误。 该 HResult 属性可能提供更多信息。
name 太长。 长度限制可能取决于操作系统或配置。
命名互斥体存在,但用户没有使用它所需的安全访问权限。
注解
name可以是前缀Global\,也可以Local\指定命名空间。
Global指定命名空间后,同步对象可以与系统上的任何进程共享。
Local指定命名空间时,这也是未指定命名空间时的默认命名空间,同步对象可以与同一会话中的进程共享。 在Windows,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似 Unix 的操作系统上,每个 shell 都有自己的会话。 会话本地同步对象可能适合在进程与父/子关系之间同步,其中它们都在同一会话中运行。 有关Windows上的同步对象名称的详细信息,请参阅 Object Names。
如果命名空间中存在所请求类型的同步对象,则会打开现有同步对象。 如果命名空间中不存在同步对象,或者命名空间中存在不同类型的同步对象, false 则返回该对象。
若要在系统互斥体尚不存在时创建系统互斥体,请使用具有参数的构造函数之 Mutex 一 name 。
如果不确定命名互斥体是否存在,请使用此方法重载而不是 OpenExisting(String) 方法重载,如果互斥体不存在,则会引发异常。
对此方法使用相同值的 name 多次调用不一定返回相同的 Mutex 对象,即使返回的对象表示同一命名的系统互斥体。
此方法重载等效于使用按位 OR 操作调用 TryOpenExisting(String, MutexRights, Mutex) 方法重载和指定 MutexRights.Synchronize 和 MutexRights.Modify 权限。 指定 MutexRights.Synchronize 标志允许线程等待互斥体,并指定 MutexRights.Modify 标志允许线程调用该方法 ReleaseMutex 。
此方法不请求互斥体的所有权。
适用于
TryOpenExisting(String, MutexRights, Mutex)
使用所需的安全访问打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。
public:
static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::MutexRights rights, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting(string name, System.Security.AccessControl.MutexRights rights, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.MutexRights * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, rights As MutexRights, ByRef result As Mutex) As Boolean
参数
- name
- String
要与其他进程共享的同步对象的名称。 名称区分大小写。 反斜杠字符 (\) 是保留的,只能用于指定命名空间。 有关命名空间的详细信息,请参阅“备注”部分。 根据操作系统,名称可能会有进一步的限制。 例如,在基于 Unix 的操作系统上,排除命名空间后的名称必须是有效的文件名。
- rights
- MutexRights
表示所需安全访问的枚举值的按位组合。
返回
true 如果已成功打开命名的互斥体,则为 ;否则,为 false. 在某些情况下, false 可能会返回无效名称。
- 属性
例外
name 是 null。
name 无效。 这可能是出于各种原因,包括操作系统可能放置的一些限制,例如未知前缀或无效字符。 请注意,名称和通用前缀“Global\”和“Local\”区分大小写。 对于某些无效的名称,该方法可能会改为返回 false 。
-或-
还有其他一些错误。 该 HResult 属性可能提供更多信息。
name 太长。 长度限制可能取决于操作系统或配置。
命名互斥体存在,但用户没有使用它所需的安全访问权限。
注解
name可以是前缀Global\,也可以Local\指定命名空间。
Global指定命名空间后,同步对象可以与系统上的任何进程共享。
Local指定命名空间时,这也是未指定命名空间时的默认命名空间,同步对象可以与同一会话中的进程共享。 在Windows,会话是登录会话,服务通常在不同的非交互式会话中运行。 在类似 Unix 的操作系统上,每个 shell 都有自己的会话。 会话本地同步对象可能适合在进程与父/子关系之间同步,其中它们都在同一会话中运行。 有关Windows上的同步对象名称的详细信息,请参阅 Object Names。
如果命名空间中存在所请求类型的同步对象,则会打开现有同步对象。 如果命名空间中不存在同步对象,或者命名空间中存在不同类型的同步对象, false 则返回该对象。
若要在系统互斥体尚不存在时创建系统互斥体,请使用具有参数的构造函数之 Mutex 一 name 。
如果不确定命名互斥体是否存在,请使用此方法重载而不是 OpenExisting(String, MutexRights) 方法重载,如果互斥体不存在,则会引发异常。
参数 rights 必须包含标志 MutexRights.Synchronize ,以允许线程等待互斥体,以及 MutexRights.Modify 允许线程调用该方法的 ReleaseMutex 标志。
对此方法使用相同值的 name 多次调用不一定返回相同的 Mutex 对象,即使返回的对象表示同一命名的系统互斥体。
此方法不请求互斥体的所有权。
适用于
TryOpenExisting(String, NamedWaitHandleOptions, Mutex)
- Source:
- Mutex.cs
- Source:
- Mutex.cs
打开指定的命名互斥体(如果已存在),并返回一个值,该值指示操作是否成功。 如果选项仅设置为当前用户,则为调用用户验证对象的访问控制。
public:
static bool TryOpenExisting(System::String ^ name, System::Threading::NamedWaitHandleOptions options, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
public static bool TryOpenExisting(string name, System.Threading.NamedWaitHandleOptions options, out System.Threading.Mutex? result);
static member TryOpenExisting : string * System.Threading.NamedWaitHandleOptions * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, options As NamedWaitHandleOptions, ByRef result As Mutex) As Boolean
参数
- name
- String
要与其他进程共享的同步对象的名称。 名称区分大小写。
- options
- NamedWaitHandleOptions
命名系统互斥体的范围选项。 默认只能访问当前用户和当前会话。 指定的选项可能会影响对基础系统互斥对象的名称和访问的命名空间。
返回
true 如果已成功打开命名的互斥体,则为 ;否则,为 false. 在某些情况下, false 可能会返回无效名称。
例外
name 是空字符串。
name 是 null。
name 无效。 这可能是出于各种原因,包括操作系统可能放置的一些限制,例如未知前缀或无效字符。 请注意,名称和通用前缀“Global\”和“Local\”区分大小写。 对于某些无效的名称,该方法可能会改为返回 false 。
-或-
还有其他一些错误。 该 HResult 属性可能提供更多信息。
name 太长。 长度限制可能取决于操作系统或配置。
命名互斥体存在,但用户没有使用它所需的安全访问权限。
注解
如果命名空间中存在所请求类型的同步对象,则会打开现有同步对象。 但是,如果 options 指定对当前用户的访问权限,并且同步对象与它不兼容, false 则返回。 如果命名空间中不存在同步对象,或者命名空间中也存在不同类型的同步对象, false 则也会返回。
若要在系统互斥体尚不存在时创建系统互斥体,请使用具有参数的构造函数之 Mutex 一 name 。
如果不确定命名互斥体是否存在,请使用此方法重载而不是 OpenExisting(String) 方法重载,如果互斥体不存在,则会引发异常。
对此方法使用相同值的 name 多次调用不一定返回相同的 Mutex 对象,即使返回的对象表示同一命名的系统互斥体。
此方法不请求互斥体的所有权。