我有一臺計算機上運行的多實例應用程序。我想實現下面的僞代碼在C#:嘗試鎖互斥鎖或等待,直到解鎖
Mutex mutex = new Mutex(false, "SomeMutex");
while (true)
{
if (CheckIfCanDoSomething())
{
if (mutex.WaitOne(TimeSpan.Zero))
{
// I am the first instance that can do the task
DoSomething();
mutex.ReleaseMutex();
}
else
{
// Some other instance was first, wait until it has finished
mutex.WaitUntilUnlockedWithoutLockingIt();
DoSomethingElse();
}
}
}
基本上,我有一個應用程序的多個實例,那就是不斷地檢查一些條件是否滿足(CheckIfCanDoSomething
)做某事(DoSomething
)。問題是當滿足條件時,應用程序只有一個實例應該執行此任務。 CheckIfCanDoSomething
方法將返回true
,直到DoSomething
任務完成。
我怎麼能達到mutex.WaitUntilUnlockedWithoutLockingIt()
邏輯?
你怎麼實現multinstance鎖定?數據庫,文件,註冊表? – eocron
@eocron命名互斥體 – Darxis
你的僞代碼沒有獲取鎖定 – eocron