手っ取り早い方法として、System.IO.FileSystemWatcherのNotifyFiltersを使って、テキストファイルベースでヘルスチェックを実装することにしました。決まったファイルに外部プログラムが何かを書き込むと、それをアドインが検出して、応答をファイルの末尾に追記する方法で、この追記があれば外部プログラムはアドインが有効に動いていると判断します。参考までに、アドイン側のコードを以下に付記します。
C#
1public static class HealthCheck
2{
3 private static object _oLock;
4
5 public static void Start()
6 {
7 var watcher = new System.IO.FileSystemWatcher()
8 {
9 Path = @"C:\Temp",
10 Filter = "OutlookAddin.run",
11 IncludeSubdirectories = false,
12 NotifyFilter =
13 System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.LastAccess,
14 };
15 watcher.Created += CatchFileCreated;
16 watcher.Changed += CatchFileChanged;
17 watcher.EnableRaisingEvents = true;
18 _oLock = new object();
19 }
20 private static void CatchFileCreated(object sender, FileSystemEventArgs e)
21 {
22 Rewrite(e.FullPath);
23 }
24 private static void CatchFileChanged(object sender, FileSystemEventArgs e)
25 {
26 Rewrite(e.FullPath);
27 }
28 private static void Rewrite(string sFullPath)
29 {
30 lock(_oLock)
31 {
32 string sTime = DateTime.Now.ToString("yyyy/MM/dd_HH:mm:ss.fff");
33 File.AppendAllText(sFullPath, $"{sTime} rewrited");
34 }
35 }
36}
37