前提・実現したいこと
Windowsのサービスプログラム(コンピュータ管理→サービスに登録するプログラム)をC#で作成しています。
Task.Run()を実行し、task実行された関数では無限ループを行っています。
定期的に、taskが動作しているかの確認を行いたいのですが、何か方法はあるでしょうか?
また、そもそも、task、無限ループが終わる時はservice毎おちているから気にして無くてもいいんでしょうか?
該当のソースコード
C#
1class FileQueWatchUsecase 2{ 3 private bool run = false; 4 5 // task開始関数 6 public void Start() 7 { 8 run = true; 9 Task.Run(() => this.Watcher()); 10 } 11 12 // チェック関数 13 public bool IsRun() 14 { 15 return run; 16 } 17 18 // 無限ループtask 19 private async void Watcher() 20 { 21 while (true) 22 { 23 await Task.Delay(1000); 24 // 処理 25 } 26 run = false; // 到達できないので無意味? 27 } 28}
試したこと
while外に出た場合、動作flagをoffに設定。
IsRunで状態をチェックとしてますが、IDEから到達できないコードだから削除した方がいいよとメッセージがありました。
補足情報(FW/ツールのバージョンなど)
visual studio 2016
.net framework 4.6.2
回答1件
あなたの回答
tips
プレビュー