Winforms 更新主UI线程上控件的正确方法是什么
在我的C#winforms应用程序中,我在后台使用Task从数据库加载数据,下面是我的代码。但在上传数据后,我正在更新绑定源的UI控件。此BindingSource组件连接到DataGrid,DataGrid也将更新 我需要知道的是,我所做的是正确的方式,还是有其他更好的方式来实现同样的目标Winforms 更新主UI线程上控件的正确方法是什么,winforms,c#-4.0,task-parallel-library,Winforms,C# 4.0,Task Parallel Library,在我的C#winforms应用程序中,我在后台使用Task从数据库加载数据,下面是我的代码。但在上传数据后,我正在更新绑定源的UI控件。此BindingSource组件连接到DataGrid,DataGrid也将更新 我需要知道的是,我所做的是正确的方式,还是有其他更好的方式来实现同样的目标 private async void Form_Load(object sender, EventArgs e) { Task loadDataTask = Task.Factory.StartNe
private async void Form_Load(object sender, EventArgs e)
{
Task loadDataTask = Task.Factory.StartNew(() =>
{
// LoadData(); // loading the data from the database
});
await loadDataTask.ConfigureAwait(true);
FormBindingSource.DataSource = _businessObjecsCollection;
}
若您负担得起,那个么让加载数据的方法成为异步的。然后,您可以将表单方法更改为:
private async void Form_Load(object sender, EventArgs e)
{
await LoadDataAsync();
FormBindingSource.DataSource = _businessObjecsCollection;
}
甚至可能
private async void Form_Load(object sender, EventArgs e)
{
FormBindingSource.DataSource = await LoadDataAsync();
}
否则,当前的方法看起来很好如果您负担得起,请使加载数据的方法异步。然后,您可以将表单方法更改为:
private async void Form_Load(object sender, EventArgs e)
{
await LoadDataAsync();
FormBindingSource.DataSource = _businessObjecsCollection;
}
甚至可能
private async void Form_Load(object sender, EventArgs e)
{
FormBindingSource.DataSource = await LoadDataAsync();
}
否则,当前的方法似乎很好请注意,在表单显示给用户之后,
DataGrid
可能会被加载。@RezaAghaei,您提出的问题很好。我将尝试采用这种方法。请注意,DataGrid
可能会在表单显示给用户后加载。@RezaAghaei,您提出的问题很好。我将尝试采用这种方法。