我想了解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
关键字。感谢。
答案 0 :(得分:3)
问题不是很明确,但如果我理解正确,那么:
而不是
//UI
List<Users> UserList=new List<Users>();
您可以保留对可以获取用户列表的任务的引用:
//UI
Task<List<Users>> users;
然后:
private async Task btnSave_Click(object sender, RoutedEventArgs e)
{
if (users != null)
{
List<Users> userList = await users;
// Your validations etc.
}
}
显然,这不会处理错误情况,但会允许您使用async / await检索用户列表。