【发布时间】:2013-11-14 10:36:33
【问题描述】:
我在 WPF 应用程序中的异步方法有问题。我想在我的 WPF 应用程序中实现异步等待模式,以在使用 EntityFramework 查询数据库时保持表单响应能力。我按照微软示例中的描述做了所有事情,但它没有像示例应用程序那样将控制流返回给应用程序。
这是我的按钮点击代码:
private async void LoginButton_Click(object sender, RoutedEventArgs e)
{
var loggedIn = await _gluUserRepository.LoginAsync(LoginTextBox.Text, PasswordTextBox.Text);
Switcher.Switch(new Loader());
if (loggedIn)
{
UserName = LoginTextBox.Text;
Switcher.Switch(new Blank());
}
else
{
UserName = String.Empty;
MessageBox.Show("Błędny login lub hasło. Spróbuj ponownie.");
Switcher.Switch(new Login());
}
}
这是我的 LoginAsync 方法:
public async Task<bool> LoginAsync(string login, string password)
{
string hashedPassword = PasswordHasher.Hash(password);
var user = await _dbContext.Users.FirstOrDefaultAsync(x => x.UserName == login);
if (user != null && user.Password == hashedPassword)
return true;
return false;
}
我在 Microsoft 示例应用程序中看到了 async/await 的相同用法,但是,他们的 WPF 应用程序将控制权返回给 Window 句柄,即我可以在我的应用程序中移动窗口,这是不可能的。
我想要实现的是在 WPF 应用程序中使用 async/await 模式来保持应用程序的响应能力。我想在查询数据库时显示加载圆,查询完成后返回方法。
有人知道我做错了什么吗?
【问题讨论】:
-
与论坛网站不同,我们不使用“谢谢”、“感谢任何帮助”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?.
-
如果您找到了问题的解决方案,您应该将其发布为答案而不是问题的编辑。
标签: c# wpf entity-framework asynchronous async-await