#include "pch.h"
#include "StorageAsync.h"
bool ActionPass(winrt::Windows::Foundation::IAsyncAction action) {
bool result = false;
bool done = false;
action.Completed([&](auto&& sender, winrt::Windows::Foundation::AsyncStatus status) {
if (status == winrt::Windows::Foundation::AsyncStatus::Completed) {
result = true;
}
else {
ERROR_LOG(Log::FileSystem, "Async action failed with status %d", (int)status);
result = false;
}
done = true;
});
winrt::Windows::UI::Core::CoreWindow corewindow = winrt::Windows::UI::Core::CoreWindow::GetForCurrentThread();
while (!done) {
try {
if (corewindow) {
corewindow.Dispatcher().ProcessEvents(winrt::Windows::UI::Core::CoreProcessEventsOption::ProcessAllIfPresent);
}
else {
corewindow = winrt::Windows::UI::Core::CoreWindow::GetForCurrentThread();
}
}
catch (...) {
}
}
return result;
}
bool ExecuteTask(winrt::Windows::Foundation::IAsyncAction action) {
try {
return ActionPass(action);
}
catch (...) {
return false;
}
}