Как запустить проект запуска без отладки, как запуск режима отладки? - PullRequest
0 голосов
/ 19 марта 2011

Я использую C ++ Managed 2010 для разработки графического интерфейса в файле form.h. Графический интерфейс действует как основной запрос потоковой передачи данных с ведомой карты.

При нажатии кнопки вызывается функция (в файле ApplicationIO.cpp), в которой 2 потока создаются с использованием API win32 (CREATETHREAD (...)): первый предназначен для обработки потоков данных, а второй - для Разбор данных и мониторинг данных в реальном времени GRPAH на GUI.

Проект имеет два разных поведения: если он запускается в режиме отладки, он может обновлять элементы управления графическим интерфейсом в виде текстового поля (с помощью invoke) и графика во время стратификации данных, наоборот, когда он запускается без отладки, в текстовом поле не отображаются данные, а данные очень медленно отображаются на графике.

кто-нибудь когда-нибудь сталкивался с подобной проблемой? Любое предложение, пожалуйста?

1 Ответ

0 голосов
/ 19 марта 2011

Довольно классической ошибкой является использование Control :: Begin / Invoke () слишком часто .Вы заполняете поток пользовательского интерфейса запросами на делегирование.Обновления пользовательского интерфейса, как правило, стоят дорого, вы легко можете попасть в состояние, когда цикл обработки сообщений не справляется со своими низко приоритетными обязанностями.Как живопись.Это происходит легко, вызывая более тысячи раз в секунду как опасную зону, в зависимости от того, сколько времени затрачивается на цели делегата.

Вы решаете эту проблему, отправляя обновления с реалистичной скоростью, которая использует преимуществао способности человеческого глаза различать их.При 25 разах в секунду обновления превращаются в размытие, обновление происходит быстрее, это просто пустая трата циклов процессора.Это оставляет много времени для потока пользовательского интерфейса, чтобы сделать то, что ему нужно сделать.

Это может все еще быть недостаточно медленным, когда обновления стоят дорого.В этот момент вам нужно пропустить обновления или ограничить рабочий поток.Обратите внимание, что Invoke () автоматически регулирует скорость, а BeginInvoke () - нет.

...