Fixing possible Deadlock in AutoCleanForm

This commit is contained in:
FlorianDahn 2021-10-17 15:39:31 +02:00
parent 5bb316d874
commit 8e29652148

View File

@ -150,8 +150,15 @@ namespace TelegramBotBase.Form
{ {
parallelQuery.ForAll(i => parallelQuery.ForAll(i =>
{ {
Device.DeleteMessage(i).GetAwaiter().GetResult(); try
deletedMessages.Add(i); {
Device.DeleteMessage(i).GetAwaiter().GetResult();
deletedMessages.Add(i);
}
catch (ApiRequestException req) when (req.ErrorCode == 400)
{
deletedMessages.Add(i);
}
}); });
} }
catch (AggregateException ex) catch (AggregateException ex)
@ -160,7 +167,7 @@ namespace TelegramBotBase.Form
var retryAfterSeconds = ex.InnerExceptions var retryAfterSeconds = ex.InnerExceptions
.Where(e => e is ApiRequestException apiEx && apiEx.ErrorCode == 429) .Where(e => e is ApiRequestException apiEx && apiEx.ErrorCode == 429)
.Max(e =>(int?) ((ApiRequestException)e).Parameters.RetryAfter) ?? 0; .Max(e => (int?)((ApiRequestException)e).Parameters.RetryAfter) ?? 0;
retryAfterTask = Task.Delay(retryAfterSeconds * 1000); retryAfterTask = Task.Delay(retryAfterSeconds * 1000);
} }
@ -183,8 +190,15 @@ namespace TelegramBotBase.Form
{ {
parallelQuery.ForAll(i => parallelQuery.ForAll(i =>
{ {
Device.DeleteMessage(i).GetAwaiter().GetResult(); try
deletedMessages.Add(i); {
Device.DeleteMessage(i).GetAwaiter().GetResult();
deletedMessages.Add(i);
}
catch (ApiRequestException req) when (req.ErrorCode == 400)
{
deletedMessages.Add(i);
}
}); });
} }
catch (AggregateException ex) catch (AggregateException ex)