Основной поток, уведомляющий GUI об изменении переменной C ++ clr - PullRequest
0 голосов
/ 12 февраля 2011

В настоящее время я работаю над приложением C ++ / clr, которое медленно прогрессирует. Когда я изменяю общее значение в потоке GUI, для основного потока очень легко увидеть, что оно было изменено, поскольку оно будет проходить через цикл и проверять изменения каждый раз (или каждые несколько, в зависимости от того, как быстро оно проходит петля) между прочим.

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

Спасибо.

1 Ответ

1 голос
/ 12 февраля 2011

Создайте метод с именем ChangeValue , затем выполните рефакторинг всех мест, где вы изменяете это значение, о котором вы говорите, чтобы использовать ChangeValue для изменения.

In ChangeValue , вызвать событие сразу после фактического изменения значения.

Таким образом, вы инкапсулируете проблему и можете использовать событие для прослушивания.

...