Mutex.TryOpenExisting 方法

定義

若已存在,則開啟指定的互斥組,並回傳一個表示操作是否成功的值。

多載

名稱 Description
TryOpenExisting(String, Mutex)

若已存在,則開啟指定的互斥節,並回傳一個表示操作是否成功的值。

TryOpenExisting(String, MutexRights, Mutex)

若已存在,則開啟指定的互斥組,並回傳一個表示操作是否成功的值。

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

若已存在,則開啟指定的互斥節,並回傳一個表示操作是否成功的值。 若選項僅設定為目前使用者,物件的存取控制會被驗證為呼叫使用者。

TryOpenExisting(String, Mutex)

來源:
Mutex.cs
來源:
Mutex.cs
來源:
Mutex.cs
來源:
Mutex.cs
來源:
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 的作業系統中,排除命名空間後的名稱必須是有效的檔名。

result
Mutex

當此方法回傳時,包含 Mutex 一個物件,代表呼叫成功 null 或呼叫失敗時的命名互斥組。 此參數被視為未初始化。

傳回

true若成功開啟命名互斥系統;否則,。 false 在某些情況下, false 可能會因姓名無效而被退回。

屬性

例外狀況

name 是空字串。

-或-

僅限 Framework .NET:name 超過 MAX_PATH(260 個字元)。

namenull

name 無效。 這可能有各種原因,包括作業系統可能施加的一些限制,例如未知的前綴或無效字元。 請注意,名稱及常見前綴「Global\」與「Local\」皆為大小寫區分。 對於某些無效名稱,該方法可能會回傳 false

-或-

還有其他錯誤。 房產 HResult 可能會提供更多資訊。

name太長了。 長度限制可能依作業系統或設定而異。

命名的互斥系統存在,但使用者沒有使用它所需的安全權限。

備註

可以name以 或 Global\ 作為前綴Local\,以指定命名空間。 當 Global 命名空間被指定時,同步物件可以與系統上的任何程序共享。 當 Local 指定命名空間時(這也是未指定命名空間時的預設),同步物件可能會與同一會話中的程序共享。 在 Windows 上,會話是登入會話,服務通常在不同的非互動會話中執行。 在類 Unix 作業系統中,每個 shell 都有自己的會話。 會話本地同步物件可能適合在具有父/子關係且所有程序都在同一會話中執行的程序間同步。 欲了解更多關於Windows同步物件名稱的資訊,請參見 Object Names

如果命名空間中存在該請求類型的同步物件,則會開啟該現有的同步物件。 若命名空間中不存在同步物件,或命名空間中存在不同類型的同步物件, false 則會回傳。

若要建立系統互斥,當系統尚未存在時,請使用 Mutex 帶有 name 參數的建構子之一。

如果你不確定是否存在命名的 mutex,請使用這個方法過載,取代 OpenExisting(String) 方法過載,後者會在該互斥體不存在時拋出例外。

多次呼叫此方法且使用相同值 name ,不一定回傳相同的 Mutex 物件,即使回傳的物件代表相同的系統互斥。

此方法過載等同於呼叫 TryOpenExisting(String, MutexRights, Mutex) 方法過載並指定 MutexRights.SynchronizeMutexRights.Modify 權利,並結合位元順序 OR 操作。 指定 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

代表所需安全存取的列舉值的位元組合。

result
Mutex

當此方法回傳時,包含 Mutex 一個物件,代表呼叫成功 null 或呼叫失敗時的命名互斥組。 此參數被視為未初始化。

傳回

true若成功開啟命名互斥系統;否則,。 false 在某些情況下, false 可能會因姓名無效而被退回。

屬性

例外狀況

name 是空字串。

-或-

僅限 Framework .NET:name 超過 MAX_PATH(260 個字元)。

namenull

name 無效。 這可能有各種原因,包括作業系統可能施加的一些限制,例如未知的前綴或無效字元。 請注意,名稱及常見前綴「Global\」與「Local\」皆為大小寫區分。 對於某些無效名稱,該方法可能會回傳 false

-或-

還有其他錯誤。 房產 HResult 可能會提供更多資訊。

name太長了。 長度限制可能依作業系統或設定而異。

命名的互斥系統存在,但使用者沒有使用它所需的安全權限。

備註

可以name以 或 Global\ 作為前綴Local\,以指定命名空間。 當 Global 命名空間被指定時,同步物件可以與系統上的任何程序共享。 當 Local 指定命名空間時(這也是未指定命名空間時的預設),同步物件可能會與同一會話中的程序共享。 在 Windows 上,會話是登入會話,服務通常在不同的非互動會話中執行。 在類 Unix 作業系統中,每個 shell 都有自己的會話。 會話本地同步物件可能適合在具有父/子關係且所有程序都在同一會話中執行的程序間同步。 欲了解更多關於Windows同步物件名稱的資訊,請參見 Object Names

如果命名空間中存在該請求類型的同步物件,則會開啟該現有的同步物件。 若命名空間中不存在同步物件,或命名空間中存在不同類型的同步物件, false 則會回傳。

若要建立系統互斥,當系統尚未存在時,請使用 Mutex 帶有 name 參數的建構子之一。

如果你不確定是否存在命名的 mutex,請使用這個方法過載,取代 OpenExisting(String, MutexRights) 方法過載,後者會在該互斥體不存在時拋出例外。

rights參數必須包含MutexRights.Synchronize允許執行緒在互斥系統等待的旗標,以及MutexRights.Modify允許執行緒呼叫該ReleaseMutex方法的旗標。

多次呼叫此方法且使用相同值 name ,不一定回傳相同的 Mutex 物件,即使回傳的物件代表相同的系統互斥。

此方法不會要求擁有互斥體的所有權。

適用於

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

來源:
Mutex.cs
來源:
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

命名系統互斥的範圍選項。 預設權限僅限於目前使用者和當前會話。 指定的選項可能會影響名稱的命名空間以及對底層系統互斥物件的存取。

result
Mutex

當此方法回傳時,包含 Mutex 一個物件,代表呼叫成功 null 或呼叫失敗時的命名互斥組。 此參數被視為未初始化。

傳回

true若成功開啟命名互斥系統;否則,。 false 在某些情況下, false 可能會因姓名無效而被退回。

例外狀況

name 是空字串。

namenull

name 無效。 這可能有各種原因,包括作業系統可能施加的一些限制,例如未知的前綴或無效字元。 請注意,名稱及常見前綴「Global\」與「Local\」皆為大小寫區分。 對於某些無效名稱,該方法可能會回傳 false

-或-

還有其他錯誤。 房產 HResult 可能會提供更多資訊。

name太長了。 長度限制可能依作業系統或設定而異。

命名的互斥系統存在,但使用者沒有使用它所需的安全權限。

備註

如果命名空間中存在該請求類型的同步物件,則會開啟該現有的同步物件。 然而,若 options 指定僅限於目前使用者存取且同步物件不相容,則 false 會回傳。 如果命名空間中不存在同步物件,或命名空間中存在不同類型的同步物件, false 也會回傳。

若要建立系統互斥,當系統尚未存在時,請使用 Mutex 帶有 name 參數的建構子之一。

如果你不確定是否存在命名的 mutex,請使用這個方法過載,取代 OpenExisting(String) 方法過載,後者會在該互斥體不存在時拋出例外。

多次呼叫此方法且使用相同值 name ,不一定回傳相同的 Mutex 物件,即使回傳的物件代表相同的系統互斥。

此方法不會要求擁有互斥體的所有權。

適用於