2011-01-27 11 views
0

私の質問に対する答えは長くて難しいものでしたが、3.5には存在しないクラス.NETは、バージョンフレームワーク(およびCEのWindows 5.0とします。)私は3.5 .NET FrameworkとCEウィンドウ5.0でexeを実行しているインスタンスを1つしか持たない方法

bool ok; 
Mutex myMutex = new Mutex(); 
ok = Mutex(true,"scanner", out ok); 

(System.Threadingを使用して)次のコンパイラは、そのミューテックスを文句を言うしようとするとまた、それは2008年

のVisual Studioを使用してVisual C#のですタイプですが、変数として使用されます。私が[STAThread]を使用すると、それが見つからないと文句を言って、[MTAThread]を使用するよう強制されました。

c#プログラムのモバイルデバイスタイプのクラスは、コンソールベースのもの私はこのやや新しく、宣言、使用、ロック、ミューテックスについて知りたいことは私の頭が痛むように思っています。コンソールのverseionやモバイルとは違っていると思います

これは非常にシンプルなので、ミューテックスを作成して、それが存在するかどうかを確認してください。新しいexeインスタンスを起動しないでください。これはすべてのEXEインスタンスを実行するだけです。モバイルデバイスではスタンドアローンなので、.exeを使用している人は誰も心配する必要はありません。 n 15回、アプリケーションが15回実行されている(低いメモリ使用量について文句を言ってください)

スレッドを作成してロックし、ロックが成功したかどうかを確認するexeのインスタンスは既に実行されています。もしそうなら、exeを実行してください。これを行う簡単な方法はありますか?

答えて

0

これにアプローチする1つの方法は、書き込み用にファイルを開くことです。アプリケーションの1つのインスタンスだけがこのロックを一度に取得できます。起動時に書き込み用のファイルハンドルを取得してください。失敗した場合は、すでに実行中の別のインスタンスが存在する必要があります。すぐに終了します。

ここでは別々のプロセスを話しているので、mutexを忘れることができると思います。

関連する問題