私はミューテックスについていくつかの調査を行いましたが、私が理解できる限り、私が望むものを明確にする価値のあるものを見つけることができませんでした. Linuxでミューテックスを簡単に使用できます。しかし、ミューテックスがアプリケーションで機能しない理由がわかりません。また、いくつかの例を探して実装しました。しかし、そんなことはありません。
これが私のミューテックスの初期化です。
public static Mutex mutex = new Mutex(true,"mut");
ここでは、ミューテックスを使用してロックしました。
private void button4_Click(object sender, RoutedEventArgs e) //Challenge Start/Stop
{
StartLocationService(GeoPositionAccuracy.High);
mutex.WaitOne();
mutex.WaitOne();
MessageBox.Show("I'm in mutex");
///...
}
これは、ミューテックスがアプリケーションによって処理されているかどうかを確認するためだけに行いました。しかし、私のアプリケーションは、どこかから解放信号を取得せずに「IM in mutex」メッセージを表示します。通常、デッドロックが発生するはずですが、そうではありません。
私がやろうとしているのは、StartLocationService が完全に完了する前に、メッセージを表示したくないということです。私もmutex.ReleaseMutex();を試しました。StartLocationService 関数の末尾内。しかし、それもうまくいきませんでした。
WP にセマフォがあればよかったのに。
私を助けてください; ありがとう