如何使用Task在Winforms中异步加载数据

时间:2018-11-14 11:14:10

标签: c# .net winforms async-await

我有一个基于Winforms C#的MDI应用程序,并且我有3个表单

  1. MainForm这是我的父表单
  2. 上述形式的子形式的子形式
  3. 上述两种形式的BaseView都继承自该基类

如果在BaseView中看到,我正在使用Task在不冻结UI的情况下将数据加载到后台线程中,这很好,并且应用程序迅速显示出来。现在的问题是,虽然这种数据加载是在后台进行的,但是我正在打开我的子窗体,但是由于后台线程仍在工作,因此子窗体无法获得Db连接,无论如何,我是否可以对我的子表单现在已经设置了后台Db连接,现在子表单可以加载数据了。 还是我应该改变实现这一目标的方式。

请咨询。

 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);
        }
    }

0 个答案:

没有答案