Mutex.TryOpenExisting 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
若已存在,則開啟指定的互斥組,並回傳一個表示操作是否成功的值。
多載
| 名稱 | 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 的作業系統中,排除命名空間後的名稱必須是有效的檔名。
傳回
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 參數的建構子之一。
如果你不確定是否存在命名的 mutex,請使用這個方法過載,取代 OpenExisting(String) 方法過載,後者會在該互斥體不存在時拋出例外。
多次呼叫此方法且使用相同值 name ,不一定回傳相同的 Mutex 物件,即使回傳的物件代表相同的系統互斥。
此方法過載等同於呼叫 TryOpenExisting(String, MutexRights, Mutex) 方法過載並指定 MutexRights.Synchronize 和 MutexRights.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
代表所需安全存取的列舉值的位元組合。
傳回
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 參數的建構子之一。
如果你不確定是否存在命名的 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
命名系統互斥的範圍選項。 預設權限僅限於目前使用者和當前會話。 指定的選項可能會影響名稱的命名空間以及對底層系統互斥物件的存取。
傳回
true若成功開啟命名互斥系統;否則,。 false 在某些情況下, false 可能會因姓名無效而被退回。
例外狀況
name 是空字串。
name 是 null。
name 無效。 這可能有各種原因,包括作業系統可能施加的一些限制,例如未知的前綴或無效字元。 請注意,名稱及常見前綴「Global\」與「Local\」皆為大小寫區分。 對於某些無效名稱,該方法可能會回傳 false 。
-或-
還有其他錯誤。 房產 HResult 可能會提供更多資訊。
name太長了。 長度限制可能依作業系統或設定而異。
命名的互斥系統存在,但使用者沒有使用它所需的安全權限。
備註
如果命名空間中存在該請求類型的同步物件,則會開啟該現有的同步物件。 然而,若 options 指定僅限於目前使用者存取且同步物件不相容,則 false 會回傳。 如果命名空間中不存在同步物件,或命名空間中存在不同類型的同步物件, false 也會回傳。
若要建立系統互斥,當系統尚未存在時,請使用 Mutex 帶有 name 參數的建構子之一。
如果你不確定是否存在命名的 mutex,請使用這個方法過載,取代 OpenExisting(String) 方法過載,後者會在該互斥體不存在時拋出例外。
多次呼叫此方法且使用相同值 name ,不一定回傳相同的 Mutex 物件,即使回傳的物件代表相同的系統互斥。
此方法不會要求擁有互斥體的所有權。