Как асинхронно загружать данные в Winforms с помощью Task - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть приложение MDI на основе Winforms C #, и у меня есть 3 формы

  1. MainForm, которая является моей родительской формой
  2. Дочерняя форма, которая является дочерней по отношению к вышеупомянутой форме
  3. BaseView обе вышеуказанные формы унаследованы от этого базового класса

Если вы видите в моем BaseView, я использую Task для загрузки данных в фоновом потоке без замораживания пользовательского интерфейса, который работаетхорошо, и приложение быстро появляется.Теперь проблема в том, что, хотя эта загрузка данных происходит в фоновом режиме, я открываю свою дочернюю форму, но дочерняя форма не может получить соединение с БД, потому что фоновый поток все еще работает, есть ли в любом случае, что я могу сделать своего рода сигналмоя дочерняя форма, которая теперь установила фоновое соединение базы данных и теперь дочерняя форма может загружать данные.Или я должен изменить способ, которым я пытаюсь достичь этого.

Пожалуйста, совет.

 public partial class BaseView : Form
    {

        public BaseView()
        {
            var firstTimeInitializationTask = new System.Threading.Tasks.Task(() => { FirstTimeInitialization(); });
            firstTimeInitializationTask.Start();
        }

        private void FirstTimeInitialization()
        {
            Thread.Sleep(10000); // just put this for testing purpose
            DbConnection.Connect(CommonRoutines.DbConnectionString);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...