У меня возникли проблемы с программированием TPL. 
 Я получаю UnobservedTaskException, я использую решение @h4165f8ghd4f854d6f8h на [ qaru.site/info/28764/... ] для обработки исключений, но все еще получает UnobservedTaskException. 
 Я также поставил следующий код перед запуском задач:
    TaskScheduler.UnobservedTaskException += (sender, e) =>
    {
        e.SetObserved();
        throw e.Exception;
    };  
но [ qaru.site/info/28765/... ] говорит, что не перехватывает каждое необработанное исключение TPL.
 Я хочу исключения пузыря, пока не достигну вершины стека, а затем справлюсь с этим. 
 Кто-то может мне помочь????
@Джон Скит
 Привет, я сделал это меньше возможно 
 Его отредактировано сейчас 
 спасибо за просмотр
class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        p.tplTestOne();
    }
    public void tplTestOne()
    {
        TaskScheduler.UnobservedTaskException += (sender, e) =>
        {
            e.SetObserved();
            throw e.Exception;
        };
        Task tsk_1 = MyClassHere.createHandledTask(() =>
        {
            double x = 1;
            x = (x + 1) / x;
        }, false);
        Task tsk_2 = MyClassHere.createHandledTask(() =>
        {
            double y = 0;
            throw new Exception("forced_divisionbyzerodontthrowanymore_test"); // here -> System.Exception was unhandled by user code
        }, true);
        Task tsk_3 = MyClassHere.createHandledTask(() =>
        {
            double z = 1;
            z = (z + 1) / z;
        }, true);
        Task tsk_4 = MyClassHere.createHandledTask(() =>
        {
            double k = 1;
            k = (k + 1) / k;
        }, true);
        Console.ReadLine();
    }
}
public static class MyClassHere
{
    public static void waitForTsk(Task t)
    {
        try
        {
            t.Wait();
        }
        catch (AggregateException ae)
        {
            ae.Handle((err) =>
            {
                throw err;
            });
        }
    }
    public static void throwFirstExceptionIfHappens(this Task task)
    {
        task.ContinueWith(t =>
        {
            var aggException = t.Exception.Flatten();
            foreach (var exception in aggException.InnerExceptions)
            {
                throw exception; // throw only first, search for solution
            }
        },
        TaskContinuationOptions.OnlyOnFaulted); // not valid for multi task continuations
    }
    public static Task createHandledTask(Action action)
    {
        return createHandledTask(action, false);
    }
    public static Task createHandledTask(Action action, bool attachToParent) 
    {
        Task tsk = null;
        if (attachToParent)
        {
            TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
            tsk = Task.Factory.StartNew(action, atp);
        }
        else
        {
            tsk = Task.Factory.StartNew(action);
        }
        tsk.throwFirstExceptionIfHappens();
        return tsk;
    }
}
Спасибо
