Отображение экрана загрузки

В форме есть метод, который выполняет трудоёмкую задачу - загружает большое кол-во строк из базы данных. И есть загрузочный экран, который тоже является минимальной версией формы - простой 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 шт):

Автор решения: tym32167

Не самое оптимальное решение, но основываясь только на том коде, чтов вы показали, можно предложить следующее

private async Task foo()
{
    LoadingSplash.DisplayLoadingWindow();
    await Task.Run(()=>LoadDatabaseData());
    LoadingSplash.CloseLoadingWindow();
}

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

→ Ссылка