Эффективная реализация резьбового консольного окна - PullRequest
0 голосов
/ 31 января 2011

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

Учитывая мои ограничения, необходимость обновлять элемент управления консоли при каждом вызове печати отладки довольно дорогаяМое намерение состоит в том, чтобы создать критическую секцию синхронизированной очереди сообщений, которая периодически выгружается рабочим потоком.Буду признателен за любые предложения о том, как можно реализовать такую ​​реализацию.

Ответы [ 4 ]

1 голос
/ 31 января 2011

В рабочем потоке заблокируйте CS и добавьте в общую структуру данных.В потоке GUI установите timer , а в обработчике сообщений WM_TIMER заблокируйте CS, удалите из общей структуры данных и добавьте к элементу редактирования.

0 голосов
/ 31 января 2011

Я попытался использовать таймер в основном потоке, и он работал достаточно хорошо для меня.Спасибо за плакаты!

0 голосов
/ 31 января 2011

Просто позаботьтесь об этой повторяющейся проблеме, связанной с многопоточностью и графическим интерфейсом:

Никогда не обращайтесь к элементам Gui из другого потока, вы должны отправить сообщение в окно, чтобы код выполнялся в основном потокепри изменении чего-либо в графическом интерфейсе.

0 голосов
/ 31 января 2011

Попробуйте запустить насос сообщений в окне управления редактированием вместо запуска нового потока.

...