Visual Studio Immediate Window Spawning Tasks and Threads Blocking Issue

Я использую специальный инструмент для проверки своего приложения. Как только приложение достигает точки останова, я могу вызвать свой инструмент из окна Immediate, вызвав определенную функцию. Сам инструмент представляет собой многопоточное приложение для Windows и поэтому порождает некоторые задачи.

Проблема, с которой я сталкиваюсь, заключается в том, что иногда некоторые задачи, запланированные с помощью инструмента, никогда не запускаются, что приводит к тому, что мой инструмент зависает на неопределенный срок. Я создаю задачи с ThreadPool.QueueUserWorkItem или с Task.Run, и они оба приводят к зависанию инструмента и никогда не выполняют эти задачи. Если вместо этого я использую класс Thread, инструмент работает отлично.

Кроме того, инструмент работает (с задачами), если он запускается нормально, то есть не из окна немедленного запуска. Поэтому проблема возникает только в том случае, если я использую «Задачи» и «Немедленное окно».

Таким образом, мой вопрос в том, что может быть причиной того, что некоторые задачи никогда не выполняются? Я понимаю, что Immediate Window блокирует все остальные потоки и выполняет команду в потоке, который попал в точку останова, но потоки/задачи, порожденные потоком Immediate Window, должны по-прежнему выполняться, верно?

И мое приложение, и инструмент написаны на С#. Я использую Visual Studio Professional 2015 Update 1.


person Огњен Шобајић    schedule 20.02.2016    source источник
comment
Кажется, я читал, что Immediate Window контролирует выполнение очень инвазивным способом. Темы останавливаются. Об этом есть сообщение в каком-то блоге Microsoft.   -  person usr    schedule 22.02.2016
comment
Не могли бы вы указать мне на этот блог? Я не мог найти ничего подобного.   -  person Огњен Шобајић    schedule 22.02.2016


Ответы (1)


Немедленное окно, в отличие от пошаговой отладки, одновременно выполняет только один поток — основной или текущий поток. Он не может вызывать новые потоки или задачи. Поэтому ваш инструмент застрянет.

person Dennis Nerush    schedule 28.02.2016
comment
Это не совсем так. Как я описал выше, он отлично работает с созданием новых потоков, но планирование задачи может блокироваться. - person Огњен Шобајић; 29.02.2016