因数据集而导致加载时间过长

时间:2016-06-05 04:46:45

标签: c# mysql winforms

实际上我的数据集源是mysql,这是我的代码

 private void frmNewInstallment_Load_1(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'cricflip_RoyalResidencyDataSet.booked_homes' table. You can move, or remove it, as needed.
            this.booked_homesTableAdapter.Fill(this.cricflip_RoyalResidencyDataSet.booked_homes);


        }

但是,我还是花了很长时间来加载这种形式,我想消除这种延迟。有没有办法异步这样做。

3 个答案:

答案 0 :(得分:3)

不建议在E0605 05:03:54.617558520 1232 tcp_client_posix.c:191] failed to connect to 'ipv4:127.0.0.1:9000': timeout occurred事件中执行繁重的操作,我建议使用Form_Load来执行此操作。

thread/task

答案 1 :(得分:1)

不要使用表单加载事件。在表单加载事件期间创建后台工作程序,启动后台工作程序。让后台工作人员更新GUI,以便用户知道它仍然很忙。

实施例; https://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

答案 2 :(得分:1)

你不需要不同的线程。在从数据库线程加载数据期间什么也不做 - 只等待数据库的响应。

使用async/await方法,您将使用相同的UI线程,在等待响应期间将释放该线程。

Form.Load eventhandler似乎已经足够了

Load eventhandler标记为async,并使您的数据库也调用异步。

public async Task<DataTable> GetData()
{
    //Your load logic
}

private async void Form_Load(object sender, EventArgs e)
{
    this.ComboBox.DataSource = await GetData();
}

Asynchronous Programming with async and await (C#)

据我所知,

async / await完全是为IO进程设计的。

只有在计算/处理内存中的某些数据时才需要不同的线程。