DDEもどき

アプリケーションの二重起動を防止し、既存のプロセスにコマンドを渡す。

これだけの事なんだけど、Rekisaにはこの機能が無かった。「.NETではDDE使えないなー」とか思ってたから。

けれど、起動の遅さが気になりだしたので、この機能を作る事にした。二重起動が劇的に速くなるはずだから。

最初はプロセス間通信とか、大げさな事考えてたけど、結局、ミューテックスとファイルとFileSystemWatcherで実装する事にした。

  • 最初に起動したプロセスはミューテックスを取得し、特定のフォルダ内のファイルを監視する。
  • 二回目以降に起動したプロセスはミューテックスの取得に失敗し、特定のフォルダ内に、起動時引数が書かれたファイルを作成する。
  • 最初に起動したプロセスは引数が書かれたファイルを読み込み、処理を行う。

こんな感じ。
ちゃんと速くなった。