いくつかのクロスプロセス同期を行う必要があります。windows .netクロスプロセス同期
プロセスBは、プロセスAが実行されている場合にのみ、いくつかのアクションを実行する必要があります。 私はこのようなミューテックスとEventWaitHandlesを使用してみました:常にます
private static bool IsProcessARunning(string mutexStr)
{
try
{
EventWaitHandle.OpenExisting(mutexStr);
return true;
}
catch (WaitHandleCannotBeOpenedException e)
{
return false;
}
}
しかし、処理後にA 'はIsProcessARunning' メソッドいったん開始します。プロセスで
メイン:プロセスBでは
EventWaitHandle eventWaitHandle = new EventWaitHandle(true, EventResetMode.ManualReset, "SOMEGUID");
プロセスAが閉じていてもtrueを返します。 私はここで何が間違っているのでしょうか?あなたが開始するときeventWaitHandle.Set()
を呼び出す必要がありますEventWaitHandle eventWaitHandle = new EventWaitHandle(true, EventResetMode.ManualReset, "SOMEGUID");
EventWaitHandle eventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, "SOMEGUID");
にと:
変更:あなたがイベントに
EDIT待つことができるように
報告した動作を再現しようとする小さなプログラムをコード化しました。 MutexまたはEventWaitHandleを使用して、期待通りに私にfalseを返します。あなたはプロセスAがもう稼働していないと確信していますか? –