У меня есть приложение wxwindows и в OnClick случае кнопки, у меня есть очень длительный процесс, например, у меня есть что-то такое, как это:Как предотвратить длительный процесс висит окно WxWidgets
for(int i=1;i<100;i++)
{
sleep(1000);
gaugeProgress->SetValue(i);
*textOutput<<i;
}
Выполняя этот код, пользовательский интерфейс не реагирует. Добавить
Refresh();
Update();
только после того, как
*textOutput<<i;
, но это не сработало.
Есть ли способ, которым я могу помнить события?
Я работаю на Windows, используя VS 20102
Создать новую тему и выполнить трудоемкую работу в этой теме. Вы можете отправлять уведомления из этого потока в основной поток пользовательского интерфейса, если вам нужно сигнализировать о ходе или завершении. Аналогично, вы можете отправлять сообщения из основного потока в новый поток, если хотите отменить задачу. Там много поводов, я представляю, что кто-то покрыл wxWidgets и как решить эту задачу при использовании этой структуры. :) – enhzflep
@enhzflep Спасибо. Как общаться между потоками? Есть ли помощь от Boost? Я помню, что в MFC существовал метод, который обрабатывал событие, и он останавливается от зависания. Есть ли такие методы в WxWidgets? – mans
Нет проблем. В обычном мире win32 можно использовать 'SendMessage' или' PostThreadMessage'. Я не использую BOOST и не нуждаюсь в потоках ни в одном из моих тривиальных проектов wx. Я предполагаю, что поиск «эквивалентов WxWidgets для PostThreadMessage» может привести к полезным результатам. Это один из результатов, возможно, полезно: https://forums.wxwidgets.org/viewtopic.php?t=8392 – enhzflep