У меня есть следующий код задачи с успешным и неудачным продолжением.
Task<IEnumerable<IDictionaryObject>> getParameters = _parametersRequester.BeginGetParametersBulk(requestJob);
var processParameters =
getParameters.ContinueWith((x) =>
{
//Do some processing
}, TaskContinuationOptions.OnlyOnRanToCompletion);
getParameters.ContinueWith((x) =>
{
AggregateException ex = x.Exception;
ex.Flatten().Handle(ie => HandleException(requestJob, canRetry, ie));
}, TaskContinuationOptions.OnlyOnFaulted);
return processParameters;
HandleException повторяет некоторые операции, если известно о возникшем исключении, и возвращает false, если встречается неизвестное исключение. Проблема, которую я вижу, заключается в том, что getParameters выдает исключение OutOfMemoryException, которое должно завершить процесс, когда запускаются финализаторы GC, но они, похоже, не запускаются, поэтому процесс все еще работает и находится в нестабильном состоянии.
Есть ли способ принудительно завершить процесс, если HandleException возвращает false?