Сообщение Re: Сильно... от 04.10.2016 16:45
Изменено 04.10.2016 16:46 Sharov
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, господа.
S>Я в полном замешательсвте, ибо данный код:
S>
S>выводит на консоль
S>False
S>done
S>start child
Путем гуглежа нашел пример идентичный моему, но работаюший ожидаемо. Путем буквального сопоставления обнаружил разниуц -- дочерний поток надо стартовать с пустым аргументом, т.е.
не
а
Вопрос -- почему так? Как это может так разительно влиять на поведение?
S>Здравствуйте, господа.
S>Я в полном замешательсвте, ибо данный код:
S>
S>static void Main(string[] args)
S> {
S> try
S> {
S> var f = Task.Factory.StartNew(t =>
S> {
S> Task.Factory.StartNew(t1 =>
S> {
S> Console.WriteLine("start child");
S> throw new ArgumentException();
S> },
S> TaskCreationOptions.AttachedToParent);
S> }, TaskCreationOptions.None);
S> f.Wait(1000);
S> Console.WriteLine(f.IsFaulted);
S> }
S> catch(AggregateException exp)
S> {
S> Console.WriteLine(exp);
S> }
S> Console.WriteLine("done");
S> Console.ReadLine();
S> }
S>
S>выводит на консоль
S>False
S>done
S>start child
Путем гуглежа нашел пример идентичный моему, но работаюший ожидаемо. Путем буквального сопоставления обнаружил разниуц -- дочерний поток надо стартовать с пустым аргументом, т.е.
не
Task.Factory.StartNew(t1 => ...
а
Task.Factory.StartNew(() => ...
Вопрос -- почему так? Как это может так разительно влиять на поведение?
Re: Сильно...
Здравствуйте, Sharov, Вы писали:
Путем гуглежа нашел пример идентичный моему, но работающий ожидаемо. Путем буквального сопоставления обнаружил разницу -- дочерний поток надо стартовать с пустым аргументом, т.е.
не
а
Вопрос -- почему так? Как это может так разительно влиять на поведение?
Путем гуглежа нашел пример идентичный моему, но работающий ожидаемо. Путем буквального сопоставления обнаружил разницу -- дочерний поток надо стартовать с пустым аргументом, т.е.
не
Task.Factory.StartNew(t1 => ...
а
Task.Factory.StartNew(() => ...
Вопрос -- почему так? Как это может так разительно влиять на поведение?