0
私は、異なるスレッドが操作を実行したいかもしれないマルチスレッドアプリケーションを持っています。私はMutexを使って、既に実行中のスレッドが操作を開始しないことを確認しました。メソッド内別のスレッドに、操作が実行中または終了していることを通知します。
System.Threading.Mutex mutex;
bool isRunning = System.Threading.Mutex.TryOpenExisting(name, out mutex);
if (!isRunning)
{
RunMethod();
}
私はミューテックスを作成し、最後にそれを解放しよう:私は、ミューテックスを取り除くにはどうすればよい
var mutex = new Mutex(true, name);
try{
//do stuff, it takes some time
}
finally
{
//TODO: I want to get rid of Mutex here
}
?私がmutex.ReleaseMutex()
とmutex.Close()
と呼んだ後でさえ、それはまだ存在しており、見つけることができるからです。操作が現在実行中か完了したことを通知するにはどうすればよいですか?
これを行う別の方法はありますか?
私はイベントのいずれかを使用することをお勧めします:[ 'AutoResetEvent' ](https://msdn.microsoft.com/en-us/library/system.threading.autoresetevent(v = vs.110).aspx)または['ManualResetEvent'](https://msdn.microsoft.com/ en-us/library/system.threading.manualresetevent(v = vs.110).aspx)を使用します。私にとってより正式な答案を作成するには、ここで十分なコードはありません。 – CodingGorilla