Информация об изменениях

Сообщение Re[3]: Почему будет deadlock? от 20.01.2020 15:22

Изменено 20.01.2020 15:34 alexander_r

Re[3]: Почему будет deadlock?
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, alexander_r, Вы писали:


_>>просто await task;

_>>ну или .ContinueWith(t => task.Wait())

S>Это понятно, но почему в исходном случае deadlock? Почему все на одном стеке? Как это можно понять не запуская код, т.к. данная ситуация стабильно вопроизводится, следовательно есть

S>какая-то неявная особенность.
так вы же вызываете await tcs.Task; он и переключает все в один поток
т.е или tcs.Task.Wait(), task.Wait() или await tcs.Task, await task
Re[3]: Почему будет deadlock?
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, alexander_r, Вы писали:


_>>просто await task;

_>>ну или .ContinueWith(t => task.Wait())

S>Это понятно, но почему в исходном случае deadlock? Почему все на одном стеке? Как это можно понять не запуская код, т.к. данная ситуация стабильно вопроизводится, следовательно есть

S>какая-то неявная особенность.
так вы же вызываете await tcs.Task; он и переключает все в один поток
т.е или tcs.Task.Wait(), task.Wait() или await tcs.Task, await task

попробуйте добавить в ваш код
    Form f = new Form();
    Test();
    Application.Run(f);