C# Mutex ReleaseMutex和Close的區別

建立一支程序,如果資源在同一時間只能夠被一支程序或執行序拿來使用,這時通常能夠用Mutex來解決此問題。至於想將資源限定於單一程序或是單一執行序內,使用方式也有所不同,千千百百種此篇不探討。本篇將要來探討,Mutex釋放的時間點,要使用ReleaseMutex來進行釋放,還是Close將Mutex釋放。

Mutex.Close()的使用範例

如果想限定單一程式不能夠重覆執行,或者是多個程序只能夠執行一個,能夠使用以下方式:

  1. 建立Global屬性,名為LockMute的Mutex變數
  2. 能夠在呼叫點寫下LockMutex?.Close()函數
  3. 建立Mutex Instance(此時Mutex已鎖住,任何程序都無法建立相同名稱的Mutex)
  4. 確認Mutex確實建立成功,如不成功則關閉當前程序(可自行定義處理方式)

Mutex.ReleaseMutex()的使用範例

如何在一個簡單的多線程應用程式中使用 Mutex 來確保對共享資源的安全訪問:

  • mutex.WaitOne():取得控制權
  • mutex.ReleaseMutex():釋放控制權

常見的使用方式,能夠透過多個Thread執行UsrFunction函數,但在同一時間點只會有一個UsrFunction執行//To Do…程序以下的內容,直到執行完成且運行了mutex.ReleaseMutex()函數,才會有下一個UsrFunction繼續執行,依此類推。

以上是筆記的內容,簡單來說ReleaseMutex()使用時機是在單一程序內的多執行序的應用方式,而Close()是針對應用程序和應用程序之間的運用,有錯誤麻煩告知~ Thanks!

發表迴響

返回頂端