Вызов методов для класса пользовательского интерфейса MF C в отдельном потоке - PullRequest
0 голосов
/ 31 марта 2020

В моем приложении MF C есть две темы. Один из них обрабатывает все вещи Wnd, а другой - управление файлами. Является ли вообще хорошей идеей вызывать некоторые методы в классах пользовательского интерфейса из других потоков? Как, например, чтобы обновить некоторые значения, поля пользовательского интерфейса показывают пользователю. Или это плохая практика, и я должен отправлять сообщения в классы windows? Если мы попытаемся использовать блокировки в потоках пользовательского интерфейса, GUI будет часто зависать, что недопустимо, если только это не очень тривиальная работа. Какова лучшая практика здесь? Должны ли мы использовать исключительно механизмы передачи сообщений при работе с пользовательским интерфейсом?

Существуют также некоторые методы пользовательского интерфейса, которые не включают данные или переменные. Например, сказать окно, чтобы максимизировать. Разве плохо в этом случае вызывать метод publi c в классе пользовательского интерфейса?

[EDIT] Я забыл рассказать о своей проблеме с отправкой сообщений. Ваши параметры всегда два указателя и не легко настраиваются.

1 Ответ

0 голосов
/ 31 марта 2020

В первую очередь пользовательский интерфейс должен быть легким и отзывчивым. Для этого sh все тяжелые работы должны выполняться отдельным потоком, в котором он может обмениваться данными с основным потоком пользовательского интерфейса mf c, используя SendMessage().

Такие команды, как максимизация windows, имеют довольно небольшие накладные расходы и могут быть выполнены в самом потоке пользовательского интерфейса. Например, для имитации длительного процесса пользовательский интерфейс может использовать анимированный индикатор выполнения.

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

...