protected void RestartPeriodicCheck() {
if (_periodicCheckCancellation != null) {
_periodicCheckCancellation.Cancel();
_periodicCheckCancellation = null;
}
var oldValue = UpdatePeriod;
UpdatePeriod = GetUpdatePeriod();
if (oldValue == TimeSpan.Zero && UpdatePeriod != TimeSpan.Zero) {
CheckAndUpdateIfNeeded().Forget();
}
if (UpdatePeriod == TimeSpan.Zero) return;
_periodicCheckCancellation = new CancellationTokenSource();
PeriodicCheckAsync(_periodicCheckCancellation.Token).Forget();
}