0
如何处理,如果需要显示对话框里面的await函数?从等待代码导致跨线程异常C#异步/等待并显示对话框
async Task loginButton_Click(...args...)
{
disable_some_gui_controls();
var svc = new WebSite();
// get captcha from user
svc.OnCaptcha +=() =>
{
var captcha = new CaptchaForm();
captcha.ShowDialog(this);
return captcha.UserCaptcha;
}
// login may ask captcha
await svc.Login("user", "password");
if (login.Success)
enable_some_gui_controls();
}
运行对话框:
例如PLZ考虑这个C#伪代码。
class WebSite
{
public delegate string Captcha();
public event Captcha OnCaptcha;
public async Task<bool> Login(...args...)
{
...
if (needs captcha)
{
string captchaText = OnCaptcha();
...
}
}
}
什么方法显示的对话框? 'loginButton_Click'或'svc.Login'?因为你说过“等待”代码“..但是对话框显示在”await“用法之外。 –
如果需要验证码,Login方法发送事件。它在里面执行登录 –
您还没有回答我的问题。这个方法是如何被调用的?这种方法本身在等待吗? –