Articles of async await

Diferencia entre regresar y esperar una Tarea en un método asíncrono

¿Hay alguna diferencia entre los métodos a continuación? ¿Es preferible uno sobre el otro? public static async Task SendAsync1(string to, string subject, string htmlBody) { // … await smtp.SendMailAsync(message); // No return statement } public static Task SendAsync2(string to, string subject, string htmlBody) { // … return smtp.SendMailAsync(message); } Este método será llamado desde los […]

¿Debería usar AsyncController en ASP.NET MVC 4?

Esta clase tiene esta descripción: Provided for backward compatibility with ASP.NET MVC 3. Y la fuente es justa: public abstract class AsyncController : Controller { } No puedo encontrar ninguna documentación sobre la desactivación de esta clase en MSDN. ¿Debo reemplazar los usos de AsyncController a Controller?

¿Por qué se eliminó “SwitchTo” de Async CTP / Release?

Traté de usar el método SwitchTo hoy para cambiar al hilo de la GUI, y encontré que el ejemplo del que lo levanté no funciona, simplemente porque el método no está allí. Entonces encontré esta propaganda aquí : La razón por la que nos deshicimos de él fue porque era muy peligroso. La alternativa es […]

¿Cómo puedo usar las palabras clave asincrónicas en un proyecto de targeting.net 4.0?

Me gustaría usar las palabras clave asincrónicas en un proyecto que se crea en .net 4.0. Si voy al sitio web nuget.org y busco “asincrónica”, obtengo muchos resultados, pero principalmente entiendo esto: Visual Studio Async CTP (Versión 3, no oficial) 0.3.0 AsyncAwaitCTP 1.0.0 ¿Cuál es la diferencia entre ambos?

AspNetSynchronizationContext y espera continuidades en ASP.NET

Observé un inesperado (y yo diría, un redundante) cambio de hilo después de await dentro del método asincrónico del controlador de API Web ASP.NET. Por ejemplo, a continuación, esperaría ver el mismo ManagedThreadId en las ubicaciones n. ° 2 y n. ° 3, pero la mayoría de las veces veo un hilo diferente en n. […]

Acceder a los controles de UI en Task.Run con async / await en WinForms

Tengo el siguiente código en una aplicación de WinForms con un botón y una etiqueta: using System; using System.IO; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private async void button1_Click(object sender, EventArgs e) { await Run(); } private async Task Run() { await […]

Breve explicación de Async / Await en .Net 4.5

¿Cómo funcionan las tareas asincrónicas (Async / Await) en .Net 4.5? Algunos ejemplos de código: private async Task TestFunction() { var x = await DoesSomethingExists(); var y = await DoesSomethingElseExists(); return y; } ¿La segunda instrucción de await se ejecuta de inmediato o después de que la primera await devolución?

HttpClient.GetAsync con credenciales de red

Actualmente estoy usando HttpWebRequest para obtener un sitio web. Me gustaría usar el patrón de espera, que no se da para HttpWebRequests . Encontré la clase HttpClient , que parece ser la nueva clase de trabajadores Http. Estoy usando HttpClient.GetAsync(…) para consultar mi página web. Pero me falta la opción de agregar ClientCredentials como HttpWebRequest.Credentials […]

¿Cómo puedo usar Async con ForEach?

¿Es posible utilizar Async cuando se usa ForEach? A continuación está el código que estoy intentando: using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); } Estoy obteniendo el error: El nombre ‘Async’ no existe en el contexto actual El método en el que se incluye la instrucción using se […]

¿Por qué se requiere un “Task.Yield ()” en espera para que Thread.CurrentPrincipal fluya correctamente?

El código siguiente se agregó a un proyecto WebAPI de Visual Studio 2012 .NET 4.5 recién creado. Estoy intentando asignar tanto HttpContext.Current.User como Thread.CurrentPrincipal en un método asincrónico. La asignación de Thread.CurrentPrincipal fluye incorrectamente a menos que un await Task.Yield(); (o cualquier otra cosa asincrónica) se ejecuta (pasar true a AuthenticateAsync() dará como resultado el […]