mirror of
https://github.com/bitwarden/mobile
synced 2026-01-01 16:13:15 +00:00
[SG-687] Request time not updating (#2108)
This commit is contained in:
@@ -10,13 +10,21 @@ namespace Bit.App.Utilities
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly Action _action;
|
||||
private readonly CancellationTokenSource _cancellationToken;
|
||||
private readonly Func<Task> _actionTask;
|
||||
private readonly CancellationTokenSource _cancellationTokenSource;
|
||||
|
||||
public TimerTask(ILogger logger, Action action, CancellationTokenSource cancellationToken)
|
||||
public TimerTask(ILogger logger, Action action, CancellationTokenSource cancellationTokenSource)
|
||||
{
|
||||
_logger = logger;
|
||||
_action = action ?? throw new ArgumentNullException();
|
||||
_cancellationToken = cancellationToken;
|
||||
_action = action ?? throw new ArgumentNullException(nameof(action));
|
||||
_cancellationTokenSource = cancellationTokenSource;
|
||||
}
|
||||
|
||||
public TimerTask(ILogger logger, Func<Task> actionTask, CancellationTokenSource cancellationTokenSource)
|
||||
{
|
||||
_logger = logger;
|
||||
_actionTask = actionTask ?? throw new ArgumentNullException(nameof(actionTask));
|
||||
_cancellationTokenSource = cancellationTokenSource;
|
||||
}
|
||||
|
||||
public Task RunPeriodic(TimeSpan? interval = null)
|
||||
@@ -26,23 +34,31 @@ namespace Bit.App.Utilities
|
||||
{
|
||||
try
|
||||
{
|
||||
while (!_cancellationToken.IsCancellationRequested)
|
||||
while (!_cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
await Device.InvokeOnMainThreadAsync(() =>
|
||||
await Device.InvokeOnMainThreadAsync(async () =>
|
||||
{
|
||||
if (!_cancellationToken.IsCancellationRequested)
|
||||
if (!_cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
{
|
||||
_action();
|
||||
if (_action != null)
|
||||
{
|
||||
_action();
|
||||
}
|
||||
else if (_actionTask != null)
|
||||
{
|
||||
await _actionTask();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_cancellationTokenSource?.Cancel();
|
||||
_logger?.Exception(ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
await Task.Delay(interval.Value, _cancellationToken.Token);
|
||||
await Task.Delay(interval.Value, _cancellationTokenSource.Token);
|
||||
}
|
||||
}
|
||||
catch (TaskCanceledException) { }
|
||||
@@ -50,7 +66,7 @@ namespace Bit.App.Utilities
|
||||
{
|
||||
_logger?.Exception(ex);
|
||||
}
|
||||
}, _cancellationToken.Token);
|
||||
}, _cancellationTokenSource.Token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user