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