public async Task Run(IEnumerable<IAcError> errors, IProgress<AsyncProgressEntry> progress, CancellationToken cancellation) {
if (_action != null) {
_action.Invoke(errors);
return;
}
var list = errors.ToList();
for (var i = 0; i < list.Count; i++) {
var error = list[i];
progress?.Report(new AsyncProgressEntry(error.Target.DisplayName, (double)i / list.Count));
await base.Run(error, progress, cancellation);
if (cancellation.IsCancellationRequested) return;
await Task.Delay(10, cancellation);
if (cancellation.IsCancellationRequested) return;
}
}
}