Al cancelar una tarea que tiene un tiempo de espera (antes de que el tiempo de espera haya finalizado) utilizando un token de cancelación se produce una excepción. Ejemplo:Cómo cancelar una tarea que está esperando con un tiempo de espera sin excepciones
mytask.start();
bool didTaskRunInTime = mytask.wait(5 mins, _cancelToken);
Lo que significa que no puedo seguir como a continuación.
//was the task cancelled
if (_cancelToken.IsCancelRequested)
{
// log cancel from user to file etc
}
if (didTaskRunInTime)
{
int taskResult = myTask.Result;
// log result to file
}
else if (!_cancelToken.IsCancelRequested)
{
// Tell user task timed out , log a message etc
}
Tendré que hacer todo esto en mi bloque de captura y mi código se ve desordenado. ¿Cuál es la forma correcta de hacer esto?
Creo que arrojará, WaitAny agregará todas las excepciones, incluso debería llamar a esperar después de waitAny (y quizás cancelar a los demás) para poder detectar sus excepciones. – eFloh
gracias John. Pero waitany no toma un tiempo de espera. Tengo exportaciones de larga ejecución que requieren un tiempo de espera de manejo. – Gullu
@eFloh: 'WaitAll' agrega excepciones. 'WaitAny' no. Ver el código de muestra. –