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方法發送事件。它在裏面執行登錄 –
您還沒有回答我的問題。這個方法是如何被調用的?這種方法本身在等待嗎? –