From ae24991432dc0495fb10d5333625d8f799e48d77 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 26 Apr 2025 15:05:15 -0500 Subject: [PATCH] Load archive warnings in a dedicated thread --- .../scwx/qt/manager/text_event_manager.cpp | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/text_event_manager.cpp b/scwx-qt/source/scwx/qt/manager/text_event_manager.cpp index 72c7531f..2300a7b1 100644 --- a/scwx-qt/source/scwx/qt/manager/text_event_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/text_event_manager.cpp @@ -239,24 +239,37 @@ void TextEventManager::SelectTime( logger_->trace("Select Time: {}", util::TimeString(dateTime)); - const auto today = std::chrono::floor(dateTime); - const auto yesterday = today - std::chrono::days {1}; - const auto tomorrow = today + std::chrono::days {1}; - const auto dateArray = std::array {today, yesterday, tomorrow}; + boost::asio::post( + p->threadPool_, + [=, this]() + { + try + { + const auto today = std::chrono::floor(dateTime); + const auto yesterday = today - std::chrono::days {1}; + const auto tomorrow = today + std::chrono::days {1}; + const auto dateArray = std::array {today, yesterday, tomorrow}; - const auto dates = - dateArray | ranges::views::filter( - [this](const auto& date) - { - return p->archiveLimit_ == std::chrono::sys_days {} || - date < p->archiveLimit_; - }); + const auto dates = + dateArray | + ranges::views::filter( + [this](const auto& date) + { + return p->archiveLimit_ == std::chrono::sys_days {} || + date < p->archiveLimit_; + }); - std::unique_lock lock {p->archiveMutex_}; + std::unique_lock lock {p->archiveMutex_}; - p->UpdateArchiveDates(dates); - p->ListArchives(dates); - p->LoadArchives(dateTime); + p->UpdateArchiveDates(dates); + p->ListArchives(dates); + p->LoadArchives(dateTime); + } + catch (const std::exception& ex) + { + logger_->error(ex.what()); + } + }); } void TextEventManager::Impl::HandleMessage(