usar operadores metodo ejemplo como carece await async asincrono c# .net asynchronous

c# - ejemplo - el metodo asincrono carece de operadores await



método asíncrono con evento completo (1)

Uso .net 4.0 e intenté descubrir cómo usar el método async para esperar que el evento DocumentCompleted complete y devuelva el valor. Mi código original está arriba, ¿cómo puedo convertirlo en modelo async / await en este escenario?

private class BrowserWindow { private bool webBrowserReady = false; public string content = ""; public void Navigate(string url) { xxx browser = new xxx(); browser.DocumentCompleted += new EventHandler(wb_DocumentCompleted); webBrowserReady = false; browser.CreateControl(); if (browser.IsHandleCreated) browser.Navigate(url); while (!webBrowserReady) { //Application.DoEvents(); >> replace it with async/await } } private void wb_DocumentCompleted(object sender, EventArgs e) { try { ... webBrowserReady = true; content = browser.Document.Body.InnerHtml; } catch { } } public delegate string AsyncMethodCaller(string url); }


Por lo tanto, necesitamos un método que devuelva una tarea cuando se DocumentCompleted evento DocumentCompleted . Cada vez que lo necesite para un evento determinado, puede crear un método como este:

public static Task WhenDocumentCompleted(this WebBrowser browser) { var tcs = new TaskCompletionSource<bool>(); browser.DocumentCompleted += (s, args) => tcs.SetResult(true); return tcs.Task; }

Una vez que tienes eso, puedes usar:

await browser.WhenDocumentCompleted();