Als «task-parallel-library» getaggte Fragen

Die Task Parallel Library ist seit .NET 4 Teil von .NET Framework. Es handelt sich um eine Reihe von APIs, mit denen Entwickler asynchrone Anwendungen programmieren können.

5
Parallel foreach mit asynchronem Lambda
Ich möchte eine Sammlung parallel bearbeiten, habe jedoch Probleme bei der Implementierung und hoffe daher auf Hilfe. Das Problem tritt auf, wenn ich eine in C # als asynchron gekennzeichnete Methode innerhalb des Lambda der Parallelschleife aufrufen möchte. Beispielsweise: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // …

4
Was ist der Unterschied zwischen der Rückgabe von void und der Rückgabe einer Aufgabe?
Beim Betrachten verschiedener C # Async CTP-Beispiele sehe ich einige Async-Funktionen, die zurückkehren void, und andere, die das Nicht-Generische zurückgeben Task. Ich kann sehen, warum die Rückgabe von a Task<MyType>nützlich ist, um Daten an den Aufrufer zurückzugeben, wenn der asynchrone Vorgang abgeschlossen ist, aber die Funktionen, die ich gesehen habe …

5
Warum sollte ich einzelne "Warten auf Task.WhenAll" gegenüber mehreren Warten bevorzugen?
Sollte mir die Reihenfolge der Aufgabenerfüllung egal sein und ich brauche nur alle, um sie zu erledigen, sollte ich sie immer noch await Task.WhenAllanstelle von mehreren verwenden await? zB ist DoWork2unten eine bevorzugte Methode zu DoWork1(und warum?): using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> …

5
Erstellen Sie eine abgeschlossene Aufgabe <T>
Ich implementiere eine Methode Task&lt;Result&gt; StartSomeTask()und kenne das Ergebnis bereits vor dem Aufruf der Methode. Wie erstelle ich eine Aufgabe &lt;T&gt; , die bereits abgeschlossen ist? Das mache ich gerade: private readonly Result theResult = new Result(); public override Task&lt;Result&gt; StartSomeTask() { var task = new Task&lt;Result&gt;(() =&gt; theResult); task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread); …

3
Wird es als akzeptabel angesehen, Dispose () nicht für ein TPL-Task-Objekt aufzurufen?
Ich möchte eine Aufgabe auslösen, die in einem Hintergrundthread ausgeführt wird. Ich möchte nicht auf die Fertigstellung der Aufgaben warten. In .net 3.5 hätte ich Folgendes getan: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); In .net 4 ist die TPL der vorgeschlagene Weg. Das übliche Muster, das ich empfohlen habe, ist: Task.Factory.StartNew(() …


3
Was ist der Vorteil der Verwendung von Async mit MVC5?
Was ist der Unterschied zwischen: 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); } und: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task&lt;ActionResult&gt; Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) …

7
ASP.NET Web API OperationCanceledException, wenn der Browser die Anforderung abbricht
Wenn ein Benutzer eine Seite lädt, stellt er eine oder mehrere Ajax-Anforderungen, die auf ASP.NET Web API 2-Controller treffen. Wenn der Benutzer zu einer anderen Seite navigiert, bevor diese Ajax-Anforderungen abgeschlossen sind, werden die Anforderungen vom Browser abgebrochen. Unser ELMAH HttpModule protokolliert dann zwei Fehler für jede stornierte Anfrage: Fehler …

2
Unterschied zwischen Warten und Weiter mit
Kann jemand im folgenden Beispiel erklären, ob awaitund ContinueWithsind oder nicht. Ich versuche zum ersten Mal, TPL zu verwenden und habe die gesamte Dokumentation gelesen, verstehe aber den Unterschied nicht. Warten Sie : String webText = await getWebPage(uri); await parseData(webText); Weiter mit : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); …



5
Warum hängt diese asynchrone Aktion?
Ich habe eine mehrschichtige .NET 4.5-Anwendung, die eine Methode mit C #s neuem asyncund aufruftawait Schlüsselwörtern , die nur hängt, und ich kann nicht verstehen, warum. Unten habe ich eine asynchrone Methode, die unser Datenbankdienstprogramm erweitert OurDBConn(im Grunde ein Wrapper für den Basiswert DBConnectionund die DBCommandObjekte): public static async Task&lt;T&gt; …

3
Die Ausnahme (n) einer Aufgabe wurden weder beim Warten auf die Aufgabe noch beim Zugriff auf ihre Ausnahmeeigenschaft beobachtet. Infolgedessen war die unbeobachtete Ausnahme
Was bedeutet das und wie kann es behoben werden? Ich verwende TPL-Aufgaben. Der ganze Fehler Die Ausnahme (n) einer Aufgabe wurden weder beim Warten auf die Aufgabe noch beim Zugriff auf ihre Ausnahmeeigenschaft beobachtet. Infolgedessen wurde die nicht beobachtete Ausnahme vom Finalizer-Thread erneut ausgelöst. bei System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib


3
Der aktuelle SynchronizationContext darf nicht als TaskScheduler verwendet werden
Ich verwende Aufgaben , um lange laufende Serveraufrufe in meinem ViewModel auszuführen, und die Ergebnisse werden bei DispatcherVerwendung wieder zusammengeführt TaskScheduler.FromSyncronizationContext(). Beispielsweise: var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() =&gt; { ... }) .ContinueWith(x =&gt; this.Message = "Completed" , context); Dies funktioniert gut, wenn ich die …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.