[英]How to call async Task<bool> method?
這是我創建的異步函數,這里在將這個函數強加到按鈕上時出現錯誤。
public async Task<bool> Login(string UserName, string Password)
{
try
{
ParseUser User = await ParseUser.LogInAsync(UserName, Password);
System.Windows.Forms.MessageBox.Show(User.ObjectId);
var currentUser = ParseUser.CurrentUser;
return true;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
return false;
}
}
調用時收到錯誤。
private void btnLogin_Click(object sender, EventArgs e)
{
if (Login(txtUserName.Text,txtPassword.Text))
{
MessageBox.Show("Login Success");
}
}
您需要異步等待Login
方法,如下所示:
private async void btnLogin_Click(object sender, EventArgs e)
{
if (await Login(txtUserName.Text,txtPassword.Text))
{
MessageBox.Show("Login Success");
}
}
現在,此事件處理程序是異步的(通過使用async
關鍵字),並異步等待Login
方法(通過使用await
關鍵字)。
請注意,一般情況下,不建議使用async void
方法。 但是,此規則的一個例外是事件處理程序。 所以這段代碼很好。
您需要異步等待方法,如下所示:
private async void btnLogin_Click(object sender, EventArgs e) {
var task = Login(txtUserName.Text, txtPassword.Text)
var result = await task;
if (result) {
MessageBox.Show("Login Success");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.