[#] Правила работы с Tasks API. Часть 2
habrabot(difrex,1) — All
2016-03-29 12:30:04


В этом посте я бы хотел поговорить о временами неправильном понимания концепции тасков. Также попытаюсь показать несколько неочевидностей при работе с **TaskCompletionSource** и просто выполненными (completed) тасками, их решение и истоки.

###



static Task<TResult> ComputeAsync<TResult>(Func<TResult> highCpuFunc)
{
var tcs = new TaskCompletionSource<TResult>();

try
{
TResult result = highCpuFunc();
tcs.SetResult(result);

// some evil code
}
catch (Exception exc)
{
tcs.SetException(exc);
}

return tcs.Task;
}






try
{
Task.WaitAll(ComputeAsync(() =>
{
// do work
}));
}
catch (AggregateException)
{

}
Console.WriteLine("Everything is gonna be ok");




Есть ли проблемы у кода выше вместе с примером? Если да, то какие? Вроде бы AggregateException ловим. _Everything is gonna be ok_? [Если возникли смутные сомнения, тогда прошу под кат][1]

[1]: https://habrahabr.ru/post/280344/#habracut