私は、コンパクトなフレームワーク3.5を実行しているハンドヘルドデバイス上の複数のインスタンスの問題を止める多くの方法を試してきました。.NET Compact Frameworkで複数インスタンスを完全に防止することは可能ですか?
現在、私は "Mutex"を作成して解決策を得て、同じプロセスが実行されているかどうかを確認します。プログラム開始時に最初に実行される "Program.cs"にこの文を入れます。
しかし、私はそれが実行中に "プログラムアイコン"を無効にする必要があるという要求をユーザーから受けているため、問題が発生しないと思います。
私は、たぶん短期間に何度もプログラムを「開く」可能性があると理解しています。だから、もしまだ "開く"ことができれば。つまり、プログラム自体が初期化され、最終的には失敗することになります。それは絶対に複数のインスタンスを防ぐことは可能ですか?またはWindows CE上のレジストリを編集するようなプログラミングをしていない別の方法がありますか?ここで
私のソースコードは次のとおりです。
bool firstInstance;
NamedMutex mutex = new NamedMutex(false, "MyApp.exe", out firstInstance);
if (!firstInstance)
{
//DialogResult dialogResult = MessageBox.Show("Process is already running...");
Application.Exit();
}
NamedMutexがOpenNetCFからクラスです。
T今、あなたが私に言ったように、実行中のインスタンスを上に持ってくるコードを探しています。しかし、私はいくつかの質問があります。ユーザーがプログラムを開くためにクリックしたため、 "Application.Exit()"が必要になると思います。つまり、新しいインスタンスが作成されたということです。したがって、メモリを節約するためには、それ自身を終了する必要があります。これは正しいですか ? –
上記の私の小切手をチェックすると、返品があります。 Application.Runを呼び出さない限り、リターンまたはApplication.Exitでどのように動作するかをテストできます。別のインスタンスが既に実行されていることが検出された場合は、新しいインスタンスを終了します。 –
Davide、Thx aあなたのためにたくさん助けてください。あなたのコードから見たように。フォアグラウンドに設定するウィンドウを特定する必要がありますか? –