我在WPF應用程序中使用異步方法時遇到問題。我想在我的WPF應用程序中實現異步等待模式,以便在使用EntityFramework查詢數據庫時保持表單響應性。我按照Microsoft示例中所述完成了所有操作,但它不會像應用程序那樣將控制流返回給應用程序。異步方法不會將控制流返回到表格
這裏是我的按鈕,單擊代碼:
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;
}
我見過異步的相同的使用/等待微軟的應用實例,但是,他們的WPF應用程序將控制返回到窗口句柄,即我可以在應用程序中移動窗口,這是不可能的。
我想要實現的是使用WPF應用程序的異步/等待模式來保持應用程序的響應。我想在查詢數據庫時顯示加載循環,查詢完成時返回方法。
任何人有一個想法我做錯了什麼?
與論壇網站不同,我們不使用「謝謝」或「任何幫助讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –
如果您發現問題的解決方案,您應該將其作爲*答案*發佈,而不是編輯該問題。 – Servy