Articles of async await

Metodo FromEvent per scopi generali

Usando il nuovo modello asincrono / aspetta è abbastanza semplice generare un’attività che viene completata quando un evento si triggers; devi solo seguire questo schema: public class MyClass { public event Action OnCompletion; } public static Task FromEvent(MyClass obj) { TaskCompletionSource tcs = new TaskCompletionSource(); obj.OnCompletion += () => { tcs.SetResult(null); }; return tcs.Task; } […]

Correggi Prova … Sintassi catch Usando Async / Attendi

Mi piace la piattezza della nuova funzionalità Async/Await disponibile in Typescript, ecc. Tuttavia, non sono sicuro che mi piace il fatto che devo dichiarare la variabile che sto await all’esterno di un try…catch blocco per usarlo più tardi. Così: let createdUser try { createdUser = await this.User.create(userInfo) } catch (error) { console.error(error) } console.log(createdUser) // […]

Esecuzione di più compiti asincroni e in attesa che vengano completati tutti

Devo eseguire più attività asincrone in un’applicazione console e attendere che vengano completate tutte prima dell’ulteriore elaborazione. Ci sono molti articoli là fuori, ma mi sembra di essere più confuso più leggo. Ho letto e capito i principi di base della libreria Task, ma mi manca chiaramente un collegamento da qualche parte. Capisco che è […]

asincrona all’app console in C #?

Ho questo semplice codice: public static async Task SumTwoOperationsAsync() { var firstTask = GetOperationOneAsync(); var secondTask = GetOperationTwoAsync(); return await firstTask + await secondTask; } private async Task GetOperationOneAsync() { await Task.Delay(500); // Just to simulate an operation taking time return 10; } private async Task GetOperationTwoAsync() { await Task.Delay(100); // Just to simulate an […]

Chiamare il metodo asincrono in modo sincrono

Ho un metodo async : public async Task GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; } Devo chiamare questo metodo da un metodo sincrono. Come posso fare questo senza dover duplicare il metodo GenerateCodeAsync affinché funzioni in modo sincrono? Aggiornare Ancora nessuna trovata ragionevole trovata. Tuttavia, vedo che HttpClient implementa già questo schema […]

Attendere un’attività completata come compito.Risultato?

Attualmente sto leggendo “Concurrency in C # Cookbook” di Stephen Cleary, e ho notato la seguente tecnica: var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; downloadTask è una chiamata a httpclient.GetStringAsync e timeoutTask sta eseguendo Task.Delay. Nel caso in cui non abbia timeout, downloadTask è già completato. Perché […]

Quando usi correttamente Task.Run e quando sei solo asincrono

Vorrei chiederti la tua opinione sull’architettura corretta quando utilizzare Task.Run . Sto riscontrando un’interfaccia utente lenta nella nostra applicazione WPF .NET 4.5 (con framework Caliburn Micro). Fondamentalmente sto facendo (frammenti di codice molto semplificati): public class PageViewModel : IHandle { … public async void Handle(SomeMessage message) { ShowLoadingAnimation(); // Makes UI very laggy, but still […]

Usando async / attendi per più attività

Sto usando un client API che è completamente asincrono, cioè ogni operazione restituisce Task o Task , ad esempio: static async Task DoSomething(int siteId, int postId, IBlogClient client) { await client.DeletePost(siteId, postId); // call API client Console.WriteLine(“Deleted post {0}.”, siteId); } Utilizzando gli operatori asincroni / attendi C # 5, qual è il modo corretto […]

Limitazione delle attività asincrone

Vorrei eseguire una serie di attività asincrone, con un limite su quante attività potrebbero essere in attesa di completamento in qualsiasi momento. Supponiamo che tu abbia 1000 URL e vuoi solo avere 50 richieste aperte alla volta; ma non appena una richiesta viene completata, si apre una connessione all’URL successivo nell’elenco. In questo modo, ci […]

Qual è la differenza tra Task.Avvio / Attendi e Async / Attendi?

Potrei mancare qualcosa ma qual è la differenza tra fare: public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); } private void DoSomethingThatTakesTime() { Thread.Sleep(10000); }