Отображение экрана загрузки
В форме есть метод, который выполняет трудоёмкую задачу - загружает большое кол-во строк из базы данных. И есть загрузочный экран, который тоже является минимальной версией формы - простой splash screen, который выводит сообщение "Пожалуйста, подождите". Вот примерный код выполнения:
private void foo()
{
LoadingSplash.DisplayLoadingWindow();
LoadDatabaseData()));
LoadingSplash.CloseLoadingWindow();
}
Внутренности методов вывода загрузочного экрана:
public static void DisplayLoadingWindow()
{
_loadingWindow = new LoadingWindow();
_loadingWindow.Show();
}
public static void CloseLoadingWindow()
{
if (_loadingWindow != null) { _loadingWindow.Close(); }
}
Логика отображения этого экрана следующая: сначала выполняется вывод на экран этого loading splash screen, потом начинается выполняться трудоёмкая задача, и по завершению - закрываться загрузочный экран. Но вот незадача - загрузочный экран не выводится. Почему? И как решить данную задачу?
Ответы (1 шт):
Не самое оптимальное решение, но основываясь только на том коде, чтов вы показали, можно предложить следующее
private async Task foo()
{
LoadingSplash.DisplayLoadingWindow();
await Task.Run(()=>LoadDatabaseData());
LoadingSplash.CloseLoadingWindow();
}
Но также стоит пояснить, что желательно сами операции по работе с БД или файловой ситемой держать асинхронными. То есть решение, что я предложил, сработает, но оно не самое лучшее.