2009-05-15 12 views
4

ユーザーが同じプログラムを2回起動するのを避けるにはどうすればよいですか? 現在の実装では、 "FindWindow"を使用してこれを実行しようとしていますが、プログラムが最初のウィンドウを開くまでに時間がかかるため、ユーザーはプログラムを2回起動してエラーなどを引き起こします。.netコンパクトなフレームワーク:同時に2回起動することを避ける

答えて

4

名前mutexを使用して、プロセス間で使用できます。

  1. P /呼び出しCreateMutexと関連するクリーンアップのもの
  2. すでに書かれた実装を使用します。何でも(愚かな)理由で、CFの設計者は、あなたが2つのオプションを持っているので、CFの開発者は、そのようなことを必要としないだろう考え出しSDFのNamedMutex class(あなたのためには#1だけです)のように、OpenNETCFから。

実際には3番目のオプションもあります。自衛隊のApplication2 classには、このロジックをラップしてアプリのシングルトンの動作を強制するカップルRun method overloadsがあります。

+0

http://www.pinvoke.net/default.aspx/kernel32/CreateMutex.html –

+0

これは、CFに名前付きミューテックスがないことは絶対に驚くべきことです。どのような間違い。 – Tim

+0

彼らが省略したことのかなり長いリストがあります。私はWTFを考慮しています。名前付きのmutexはトップ20にも含まれていません。 – ctacke

2

はこれを使用します。そこに選択肢のhttp://msdn.microsoft.com/en-us/netframework/bb943002.aspx

多くは、どちらかあまりにも複雑であるか、すべての時間を動作しません。

+0

ありがとう、私にとっては遅すぎます。 –

+1

リンクが切れています。リンクが更新されていますか? –

+1

あなたがwaybackmachineを見ると、記事はそこにあり、C#プロジェクトはまだそこにあります。 http://web.archive.org/web/20120615205228/http://download.microsoft.com/download/f/0/0/f0048787-627a-4d39-b40f-e996c70ab0eb/CS-AppOneCopy_cs.zip –