/// <summary> /// ウォッチドッグを一時停止する /// </summary> /// <remarks> /// <para> /// 内部的にはlong.MaxValueミリ秒のウォッチドッグを行なっているだけなの /// で、スレッド監視処理の負荷は減りません。 /// </para> /// </remarks> public static void SuspendWatchdog() { NThread nth = CurrentThread; if (nth != null) { nth.watchdog(long.MaxValue, WatchdogMode.Keep); } }
/// <summary> /// ウォッチドッグを開始する /// </summary> /// <param name="timeout">ウォッチドッグタイムアウト時間(ミリ秒)。省略または0以下を指定した時は以前の設定を継続する</param> /// <param name="mode">ウォッチドッグ発動時の動作。省略時は以前の設定を継続する</param> /// <remarks> /// <para> /// このスレッド用のウォッチドッグ用のスレッドが作成されて監視します。 /// ただし、すでにウォッチドッグスレッドが作成されている場合は、ウォッチ /// ドッグタイマのリセットだけを行なうことになります。 /// 同一スレッドで次にWatchdog / StopWatchdogが呼ばれる前にtimeoutミリ秒 /// が経過すると、modeで指定した動作が起こります。 /// タイムアウトでスレッドをAbortする際には、ExceptionStateに /// TimeoutExceptionオブジェクトがセットされます。 /// </para> /// </remarks> public static void Watchdog(int timeout = 0, WatchdogMode mode = WatchdogMode.Keep) { NThread nth = CurrentThread; if (nth != null) { nth.watchdog((long)timeout, mode); } }