Estoy utilizando la Biblioteca de tareas paralelas para ejecutar una tarea que, cuando se cancela, arroja la OperationCanceledException, que luego se captura usando AggregateException, de la siguiente manera. The AggregateException contiene una lista de TaskCanceledExceptions, que corresponde a las excepciones arrojadas. Desafortunadamente, estas TaskCanceledExceptions parecen estar perdiendo los rastros de pila lanzados por las excepciones originales. ¿Esto es por diseño?TaskCanceledException en AggregateException no contiene seguimiento de pila
try
{
task1.Wait();
}
catch (AggregateException aggEx)
{
var tcex = ex as TaskCanceledException;
if (tcex != null)
{
Debug.WriteLine("InnerException:{0}, Message:{1}, Source:{2}, StackTrace: {3}",
tcex.InnerException, tcex.Message, tcex.Source, tcex.StackTrace);
return true;
}
else
{
return false;
}
}
Resultado:
InnerException:, Message:A task was canceled., Source:, StackTrace:
¡Actualice su código para reflejar los resultados que ha publicado! :) –
¿Es correcta la línea "if (tcex! = Null)"? Parece que debería ser "if (tcex == null)" –
@MatthewWatson - este 'if' filtra otras excepciones. –