Вы говорите о некоторых довольно сложных проблемах с потоками. Используя встроенную структуру управления системой, невозможно предотвратить завершение цикла обработки сообщений, кроме метода прерывания (изящного) другого метода.
Теперь, если эта возможность очень важна для вас, вы МОЖЕТЕ собрать все пользовательские элементы управления, и в коде рисования вашего элемента управления вы можете проверить (в поточно-ориентированном виде, конечно) логическое значение, указывающее, следует ли продолжать рисование. .
Но если я смогу сделать удар в темноте, я догадываюсь, что вы на самом деле явно не выполняете многопоточность. Если это так, то сценарий, который вы описываете, вообще не может произойти, так как процесс обновления GUI завершится до того, как может начаться другой (а именно, этот анонимный процесс, который вы описываете, который требует другого обновления или считает текущую одну несвежую). Поскольку код в одном и том же потоке выполняется последовательно, у несвязанного куска кода действительно нет возможности вызвать обновление.
Семантика того, как и когда происходит перерисовка (например, разница между Invalidate () и Refresh (), и их соответствующее влияние на эту логику) - тема, которая, вероятно, действительно вас не интересует. Просто знай, что если ты ...
- Занимаясь многопоточностью, вы
должны реализовать свой собственный код для
проверка, является ли текущий
операция должна продолжаться (для
Пользовательский интерфейс, это означает, что пользовательские элементы управления с
это логика в логике краски)
- Не
делать многопоточность, то, что вы
описать никогда не получится.
Надеюсь, это полезно!