Есть ли способ сделать новые сгенерированные потоки автоматически приостанавливать в Visual Studio? - PullRequest
0 голосов
/ 06 июля 2010

Отладка многопоточного приложения. Я замораживаю потоки, поскольку вижу, что они созданы, но мне интересно, есть ли параметр, чтобы вновь созданные потоки по умолчанию были приостановлены?

Я продолжаю искать и видеть новые потоки, которые мне не нужны!

Спасибо

Ответы [ 2 ]

4 голосов
/ 06 июля 2010

Нет такой опции в Visual Studio. Почти единственное, что вы можете сделать, это вызвать метод Suspend () объекта Thread сразу после его создания. Это не может работать для потоков пула потоков.

Когда вы это сделаете, компилятор будет вас раздражать, Suspend () - это устаревший метод. В .NET 1.x дни он подвергался злоупотреблениям для синхронизации потоков, чего он не может делать надежно. Что, конечно, именно то, что вы делаете. Особая проблема, которую вы создаете, заключается в том, что вы просто больше не отлаживаете приложение таким образом, чтобы это отражало его работу в работе. Вы будете скрывать пронизывающие ошибки гонки.

Отладка ошибок потоков может быть очень сложной. Почти единственный разумный подход - использование трассировки. Это само по себе меняет время выполнения кода, заставляя ошибки исчезать. После отладки в течение недели или около того сделайте шаг назад и спросите себя, использует ли программа слишком много потоков и стала ли она недоступной.

2 голосов
/ 06 июля 2010

Установить точку останова в начале процедуры потока. Откройте окно потоков , чтобы увидеть все запущенные потоки. Вы можете просто просмотреть темы (и назвать их, если хотите легко их идентифицировать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...