コンソールアプリケーションの終了方法

仕事でちょっとしたコンソールアプリケーションをC#で作成。

タスクスケジューラで起動、常駐してファイルを監視するモノ。

で、それを定時に再起動、またはメンテ時に停止する処理を加えたい。

外部プロセスからの入力で停止処理を行うようにするには。

  • 標準入力で待ち受け、外部から入力
  • 名前付きパイプで
  • Socket で
  • Mutex, Semaphore で

今回はMutexを選択。こんな感じ。

 

Console Application with Kill switch

 

Semaphoreで実装した理由はそのうち。。。

 

実装しながら「これ、Windowsサービスでいいんじゃね」と自問。