アプリケーションの多重起動を禁止するでは多重起動禁止にmutexを利用しましたが、別解としてatomの一種であるglobal atomを利用する、という方法も(あまり主流ではないにしても)出回っているようです。しかしGlobalAddAtom(ja)で追加したglobal atomは明示的にGlobalDeleteAtom(ja)で削除しなければ自動的に消滅することはありません。このためアプリケーションが何らかの理由で異常終了してしまうと再実行することができなくなってしまいます。実際にプロジェクトソースを
として一つ目のインスタンスを実行し、強制的に終了してから二つ目のインスタンスを実行してみましたが、GlobalFindAtom(ja)で有効なglobal atomが取得できてしまい、ログオフ/再起動を行うまでプログラムは有効に起動できません。ということでアプリケーションの多重実行を禁止するのにglobal atomを使用するのは不適切である(global atomの用途として適切ではない)、という結論に達しました。
元ねたはTrial Delphi Programs: Allow Only One Application Execution Per Windows Session。
2009年10月14日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿