Прежде всего, вообще не используйте конструктор Task
.Если вы хотите запустить делегат в потоке пула потоков, используйте Task.Run
.Далее, не используйте ContinueWith
, используйте await
, чтобы добавить продолжения к задачам.Таким образом, намного проще написать правильный код, особенно в отношении правильной обработки ошибок.Ваш код наиболее эффективно написан как:
try
{
await Task.Run(() => Execute(action));
Continuation();
}
catch(Exception e)
{
LogExceptions(e)
}
finally
{
CustomLogging();
}