Articles of async await

Come posso evitare continuazioni sincrone su un’attività?

Ho un codice libreria (socket networking) che fornisce un’API basata sulle Task per le risposte in sospeso alle richieste, in base a TaskCompletionSource . Tuttavia, c’è un fastidio nel TPL in quanto sembra imansible prevenire continuazioni sincrone. Quello che vorrei essere in grado di fare è: indicare una TaskCompletionSource che non dovrebbe consentire ai chiamanti […]

Se la mia interfaccia deve restituire Attività qual è il modo migliore per avere un’implementazione senza operazioni?

Nel codice seguente, a causa dell’interfaccia, la class LazyBar deve restituire un’attività dal suo metodo (e non può essere modificata per motivi di argomenti). Se l’implementazione di LazyBar è inusuale in quanto avviene in modo rapido e sincrono, qual è il modo migliore per restituire un’attività non operativa dal metodo? Sono andato con Task.Delay(0) qui […]

Scarica più file asincroni e attendi che tutti finiscano prima di eseguire il resto del codice

Sto cercando di scaricare più file da internet e attendo che tutti finiscano. Questa è un’applicazione di console C # in cui sono in esecuzione, quindi nessun gestore di eventi della barra di avanzamento dovrebbe essere necessario. Tuttavia, al momento, continua a eseguire codice anche se tutti i file non sono stati scaricati. 1. Scaricare […]

ConfigureAwait invia la continuazione a un thread del pool

Ecco un codice WinForms: async void Form1_Load(object sender, EventArgs e) { // on the UI thread Debug.WriteLine(new { where = “before”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); var tcs = new TaskCompletionSource(); this.BeginInvoke(new MethodInvoker(() => tcs.SetResult(true))); await tcs.Task.ContinueWith(t => { // still on the UI thread Debug.WriteLine(new { where = “ContinueWith”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); }, TaskContinuationOptions.ExecuteSynchronously).ConfigureAwait(false); // on […]

L’operatore di attesa può essere utilizzato solo all’interno di un metodo Async

Sto provando a creare un semplice programma per testare la nuova funzionalità async .NET in Visual Studio 2012. Generalmente utilizzo BackgroundWorkers per eseguire codice in termini di tempo in modo asincrono, ma a volte sembra una seccatura per un’operazione relativamente semplice (ma costosa) . Il nuovo modificatore asincrono sembra che sarebbe bello da usare, ma […]

async – stai sul thread corrente?

Ho letto l’ articolo di Eric Lippert su async e sulle confusioni che la gente aveva con parole chiave async . Egli ha detto : it ( async ) significa “questo metodo contiene il stream di controllo che implica l’attesa di operazioni asincrone e verrà quindi riscritto dal compilatore nello stile di passaggio continuo per […]

Sequenziamento delle attività e rientro

Ho il seguente scenario, che penso possa essere abbastanza comune: Esiste un’attività (un gestore di comandi dell’interfaccia utente) che può essere completata in modo sincrono o asincrono. I comandi possono arrivare più velocemente di quanto non vengano elaborati. Se esiste già un’attività in sospeso per un comando, la nuova attività del gestore comandi deve essere […]

Task.Result è uguale a .GetAwaiter.GetResult ()?

Recentemente ho letto un codice che utilizza molti metodi asincroni, ma a volte è necessario eseguirli in modo sincrono. Il codice fa: Foo foo = GetFooAsync(…).GetAwaiter().GetResult(); È lo stesso di Foo foo = GetFooAsync(…).Result; ?

Qual è il vantaggio dell’uso di async con MVC5?

Qual è la differenza tra: public ActionResult Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result = IdentityManager.Authentication.CheckPasswordAndSignIn(AuthenticationManager, model.UserName, model.Password, model.RememberMe); if (result.Success) { return Redirect(“~/home”); } else { AddErrors(result); } } return View(model); } e: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result = await […]

Task.Run è considerato una ctriggers pratica in un’applicazione Web MVC ASP .NET?

sfondo Attualmente stiamo sviluppando un’applicazione web, che si basa su ASP .NET MVC 5, Angular.JS 1.4, Web API 2 e Entity Framework 6. Per motivi di scalabilità, la pesantezza delle applicazioni Web si basa sul modello async / await. Il nostro dominio richiede alcuni calcoli intensivi della CPU, che possono richiedere alcuni secondi ( Vedi […]