【发布时间】:2018-01-25 13:25:22
【问题描述】:
我正在尝试了解async 和await。现在我想在我当前的项目中应用async 和await 关键字。我的流程结构是:
//DataAccess
Private List<Users> GetAllUsers()
{
.... ;
return List<Users>
}
//UI
List<Users> UserList=new List<Users>();
private async void Ok_ClickAsync(object sender, RoutedEventArgs e)
{
//I want to select all user ant assign to UserList but currently it not use.
UserList=await BindUser();
}
private async Task<List<Users>> BindUser()
{
List<Users> model=await Task.Run(()=>GetAllUsers());
return model;
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
//I want to use UserList here and want to validate process
}
问题是如果我快速单击保存单击按钮,UserList 计数是 0(实际上 UserList 记录超过 100,000)。所以我想在进行验证过程之前检查 BindUser() 过程是否完成Save_Click()。请让我知道最佳解决方案并帮助我理解 async 和 await 关键字。谢谢。
【问题讨论】:
-
在 GetAllUsers 方法中实现 await async 并从那里返回 Task
- >。 List
model=await GetAllUsers(); -
如果您使用 LINQ 和 EF ,它会影响您的性能,因为它们在大型数据库中非常慢。我建议你使用分页,只获取你想要的那些记录。
标签: c# wpf async-await