Можно ли разорвать все потоки, кроме одного, в Visual Studio 2010? - PullRequest
9 голосов
/ 23 марта 2011

Можно ли разорвать все потоки, кроме одного, в Visual Studio 2010 Ultimate?

Один из потоков в моем приложении работает с TCP-прокси. Сервер, к которому он подключается, отключается, когда клиент (подключающийся к моему прокси-серверу) не отправляет пакет keep-alive каждые несколько секунд.

Так что мне нужно было бы прервать все другие потоки (например, обработку пакетов), чтобы я мог редактировать эту часть, не отключаясь.

Это достижимо без дополнений?

Ответы [ 4 ]

4 голосов
/ 08 апреля 2011

Одним из решений, которое может сработать, является написание макроса, который вы вызываете, когда останавливаетесь на BP, и функция оценивает некоторую функцию, которая отправляет некоторые оставшиеся в живых пакеты.

например. ваш макрос выглядит как

DTE.Windows.Item ("{ECB7191A-597B-41F5-9843-03A4CF275DDE}"). Activate () 'Немедленное окно DTE.ExecuteCommand ("Debug.Print", "KeepAliveFunc ()")

Это явно не идеально, но если ничто иное не помогает ...

4 голосов
/ 26 марта 2011

Похоже, это невозможно.См. Разрыв одной нити для предыдущего обсуждения той же проблемы.

1 голос
/ 08 апреля 2011

Может быть возможно просто поместить цикл while в поток, который вы хотите приостановить, с помощью таймера для вывода данных об определенных переменных в текстовое поле. Затем сделать кнопку для перехода между циклами?

Просто идея.

1 голос
/ 27 марта 2011

Когда вы разбиваете все в отладчике, в окне потоков щелкните правой кнопкой мыши по всем потокам, которые вы не хотите запускать, и выберите «заморозить», затем продолжите работу, будет работать только ваш целевой поток.

...