这是我创建的异步函数,这里在将这个函数强加到按钮上时出现错误.
public async TaskLogin(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"); } }
Yacoub Massa.. 6
您需要异步等待这样的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
方法.但是,此规则的一个例外是事件处理程序.所以这段代码很好.
您需要异步等待这样的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
方法.但是,此规则的一个例外是事件处理程序.所以这段代码很好.