Articles of async await

Annullamento di una richiesta HttpClient – Perché TaskCanceledException.CancellationToken.IsCancellationRequested false?

Dato il seguente codice: var cts = new CancellationTokenSource(); try { // get a “hot” task var task = new HttpClient().GetAsync(“http://www.google.com”, cts.Token); // request cancellation cts.Cancel(); await task; // pass: Assert.Fail(“expected TaskCanceledException to be thrown”); } catch (TaskCanceledException ex) { // pass: Assert.IsTrue(cts.Token.IsCancellationRequested, “expected cancellation requested on original token”); // fail: Assert.IsTrue(ex.CancellationToken.IsCancellationRequested, “expected cancellation requested […]

attendibile coda basata su attività

Mi chiedo se esista un’implementazione / wrapper per ConcurrentQueue , simile a BlockingCollection in cui il prelievo dalla raccolta non viene bloccato, ma è invece asincrono e causerà un’attesa asincrona finché un elemento non viene inserito nella coda. Sono arrivato con la mia implementazione, ma non sembra funzionare come previsto. Mi chiedo se sto reinventando […]

C’è qualcosa come BlockingCollection asincrona ?

Mi piacerebbe await il risultato di BlockingCollection.Take() modo asincrono, quindi non blocco il thread. Alla ricerca di qualcosa di simile: var item = await blockingCollection.TakeAsync(); So che potrei fare questo: var item = await Task.Run(() => blockingCollection.Take()); ma questo tipo uccide l’intera idea, perché invece un altro thread (di ThreadPool ) viene bloccato. C’è qualche […]

Comprensione del contesto in C # 5 async / await

Ho ragione nel ritenere che async / awaiting stesso non ha nulla a che fare con la concorrenza / parallelismo e non è altro che l’implementazione del CPS (continuous-passing style)? E il threading reale viene eseguito SynchronizationContext di SynchronizationContext che await passaggi / ripristini? Se è corretto, ho la seguente domanda su SynchronizationContext : garantisce […]

Utilizzare Task.Run () nel metodo sincrono per evitare deadlock in attesa sul metodo async?

AGGIORNAMENTO Lo scopo di questa domanda è ottenere una risposta semplice su Task.Run() e deadlocking. Capisco molto il ragionamento teorico per non mischiare asincrono e sincronizzazione, e li prendo a cuore. Non sto sopra imparando cose nuove dagli altri; Cerco di farlo ogni volta che posso. Ci sono solo momentjs in cui tutto ciò di […]

C # 5 Async / Attesa – è * concurrent *?

Ho preso in considerazione la nuova roba asincrona in C # 5, e una domanda particolare è venuta fuori. Comprendo che la parola chiave await è un accurato trucco del compilatore / zucchero sintattico per implementare il passaggio di continuazione , dove il resto del metodo viene suddiviso in oggetti Task e in coda per […]

Lottando cercando di ottenere cookie di risposta con HttpClient in. NET 4.5

Ho il seguente codice che funziona correttamente. Non riesco a capire come ottenere il cookie dalla risposta. Il mio objective è che voglio essere in grado di impostare i cookie nella richiesta e ottenere i cookie dalla risposta. Pensieri? private async Task Login(string username, string password) { try { string url = “http://app.agelessemail.com/account/login/”; Uri address […]

Modo corretto per ottenere CoreDispatcher in un’app di Windows Store

Sto creando un’app di Windows Store e ho un codice che deve essere pubblicato nel thread dell’interfaccia utente. Per questo, mi piacerebbe recuperare il CoreDispatcher e usarlo per pubblicare il codice. Sembra che ci siano alcuni modi per farlo: // First way Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher; // Second way Window.Current.Dispatcher; Mi chiedo quale sia corretta? o se entrambi […]

GetResponseAsync non accetta cancellationToken

Sembra che GetResponseAsync non accetti cancellationToken in Async / Await. Quindi la domanda è come posso annullare la procedura qui sotto, a condizione che ho bisogno di raccogliere cookie dalla risposta: using (HttpWebResponse response = (HttpWebResponse) await request.GetResponseAsync()) { cookies.Add(response.Cookies); } Un codice alternativo per ottenere quanto sopra è anche il benvenuto.

Differenza tra il ritorno e l’attesa di un’attività in un metodo asincrono

C’è qualche differenza tra i metodi qui sotto? Uno è preferibile rispetto all’altro? 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); } Questo metodo verrà chiamato dai metodi del […]