[英]Should I dispose a Mutex?
我正在開發2個Windows服務,它有一個公共數據庫,我想用系統Mutex鎖定(交叉處理)。
現在我想知道在try-finally
塊中調用WaitOne()
和ReleaseMutex()
,或者我是否也應該using
Mutex(例如在using
塊中)。 如果是這樣我想我應該總是在WaitOne()
方法上捕獲AbandonedMutexException
,或者我在這里錯了?
互斥鎖是Windows內核對象(此處包含在.NET對象中)。
因此,它應該是一種非托管資源。
更准確地說,.NET對象包含互斥鎖的HANDLE,必須以某種方式釋放/處理。
我不相信Mutex類docs中沒有處理互斥對象的代碼示例 。 雖然Henzi在評論中有一個很好的觀點:Mutex對象是靜態的,並且在進程退出時由終結器處理或由Windows內核銷毀。
另請注意, Close()也會處理對象。
當然,即使您不使用它,在應用程序中保留現有Mutex對象也沒有錯。 它們是輕資源。
您需要處理waithandle使用的資源。
從文檔:
釋放WaitHandle類的當前實例使用的所有資源。 (繼承自WaitHandle。)
waithandle使用非托管資源,應在使用結束時進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.