掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ウォッチドッグタイマーの実装方法 (ID:103284)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>VB.NET の場合は隣の掲示板を利用してください。 了解。次回からそうします。よく見ていませんでした。 >とりあえず一般論として: 了解。アドバイスありがとうございます。 >「hoge.Main」「Hoge.Main」と 「hoge.Main」「Hoge.Main」は「test.Main」の間違いです。 実際のコードからやりたいところだけ抜き出して書き直したとき に間違いました。 >何をもって「安全な終了」とするのかは、ケースバイケースですよね。 以前、Excelを制御したときに「VB.NET からExcel を扱う場合は、VB6.0 とは違い全てのCOMオブジェクトを ReleaseComObject する」ということ を知らずにいたので何度もこのソフトを実行するとメモリ不足のエラーがでました。 一見正常に動作しているように見えても、終了処理が悪くタスクマネージャーで 見るとプロセスに複数のExcel.exeが動いていました。 ウォッチドッグタイマーのためにマルチスレッドを考えていますが、この実装は初めての ため、また、同じようなことが起きるのではと思い。 アドバイスを求めて投稿しました。 【やりたいこと】 ウォッチドッグタイマー(1分)として下記の処理を考えています。 1.ループ処理をしているメインスレッドからタイマースレッドを起動 (ループ処理は通常30秒で処理が終了) 2.タイマーが1分になる前にメインスレッドのループ処理が終わればタイマースレッドを終了 (正常時の処理) 3.タイマーが1分を過ぎるとタイマースレッド側でエラーメッセージを表示し、タイマースレッドを 終了。さらに、メインスレッドを強制終了 (異常時の処理:ループ処理がフリーズしているため) サンプルコードはSystem.Threading.Timeクラスで書きましたが System.Timers.Timerクラスが使いやすいか?とも考えています。 .Interval = 60*000 .AutoReset = False .Enabled = True でメインスレッドからTimer起動 .Enabled = false でメインスレッドがらTimer停止 ただ、タイムupしたときのタイマースレッドの終了とメインスレッドの強制終了 をタイマースレッド側にどう実装すればよいか? メインスレッドは何も実装し なくて良いのか? がわかりません。 また、timerクラスの使い方が正しいのかもわかりません。 >ログ出力等で確認されましたか? ログ出力も追加してフリーズの原因を調べるでが、頻度が、数ヶ月 に1回のため、並行してウォッチドッグタイマを入れることを考えている ところです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.