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.
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 => { // …
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 …
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> …
Ich implementiere eine Methode Task<Result> StartSomeTask()und kenne das Ergebnis bereits vor dem Aufruf der Methode. Wie erstelle ich eine Aufgabe <T> , die bereits abgeschlossen ist? Das mache ich gerade: private readonly Result theResult = new Result(); public override Task<Result> StartSomeTask() { var task = new Task<Result>(() => theResult); task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread); …
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 => { DoSomething(); }); In .net 4 ist die TPL der vorgeschlagene Weg. Das übliche Muster, das ich empfohlen habe, ist: Task.Factory.StartNew(() …
Ich verwende TPL in meinem aktuellen Projekt und Parallel.Foreach, um viele Threads zu spinnen. Die Task-Klasse enthält Wait (), um zu warten, bis die Task abgeschlossen ist. Wie kann ich so warten, bis Parallel.ForEach abgeschlossen ist, und dann die nächsten Anweisungen ausführen?
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 …
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<String> webText = new Task<String>(() => getWebPage(uri)); …
Ich habe eine Weile versucht, etwas zu bekommen, von dem ich dachte, dass es einfach wäre, mit .NET 4.5 zu arbeiten Ich möchte zwei lange laufende Aufgaben gleichzeitig starten und die Ergebnisse auf die beste C # 4.5 (RTM) -Methode sammeln Folgendes funktioniert, aber ich mag es nicht, weil: Ich …
// let's say there is a list of 1000+ URLs string[] urls = { "http://google.com", "http://yahoo.com", ... }; // now let's send HTTP requests to each of these URLs in parallel urls.AsParallel().ForAll(async (url) => { var client = new HttpClient(); var html = await client.GetStringAsync(url); }); Hier ist das Problem, …
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<T> …
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
Diese Frage gefällt mir sehr gut: Einfachste Möglichkeit, eine Feuer- und Vergessensmethode in C # durchzuführen? Ich möchte nur wissen, dass es jetzt, da wir parallele Erweiterungen in C # 4.0 haben, eine sauberere Möglichkeit gibt, Fire & Forget mit parallel linq auszuführen.
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(() => { ... }) .ContinueWith(x => this.Message = "Completed" , context); Dies funktioniert gut, wenn ich die …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.