次のような DispatchTimer を作成するとします。
if (_updateTimer != null) リターン;
_updateTimer = 新しい DispatcherTimer(DispatcherPriority.Normal) {間隔 = 新しい TimeSpan(0, 0, 0, Settings.Default.UpdateIntervallSec)};
_updateTimer.Tick += UpdateTimerOnTick;
_updateTimer.Start();
これで、システムがスリープ状態になるか、動作が停止します。システムが作業を再開した後、コードによって NullPointerException がスローされます。これを避けるために、私はイベントに登録しますSystemEvents.PowerModeChanged += SystemEventsOnPowerModeChanged;
次のコードを使用します。
private void SystemEventsOnPowerModeChanged(オブジェクト送信者, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Suspend)
{
if (_updateTimer == null) 戻ります。
_updateTimer.Tick -= UpdateTimerOnTick;
_updateTimer.IsEnabled = false;
_updateTimer.Stop();
}
if (e.Mode == PowerModes.Resume)
{
if (_updateTimer != null) リターン;
_updateTimer = 新しい DispatcherTimer(DispatcherPriority.Normal) {間隔 = 新しい TimeSpan(0, 0, 0, Settings.Default.UpdateIntervallSec)};
_updateTimer.Tick += UpdateTimerOnTick;
_updateTimer.Start();
}
}
しかし、これでは問題は解決しません。「UpdateTimerOnTick」メソッドが null であるという例外が呼び出されます。この動作を防ぐ方法はありますか?