Pytania otagowane jako task-parallel-library

Biblioteka równoległa zadań jest częścią .NET Framework od .NET 4. Jest to zestaw interfejsów API umożliwiających programistom programowanie aplikacji asynchronicznych.

5
Dlaczego CancellationToken jest oddzielony od CancellationTokenSource?
Szukam uzasadnienia, dlaczego CancellationTokenstruktura .NET została wprowadzona jako dodatek do CancellationTokenSourceklasy. Rozumiem, jak należy używać interfejsu API, ale chcę również zrozumieć, dlaczego jest tak zaprojektowany. To znaczy, dlaczego mamy: var cts = new CancellationTokenSource(); SomeCancellableOperation(cts.Token); ... public void SomeCancellableOperation(CancellationToken token) { ... token.ThrowIfCancellationRequested(); ... } zamiast bezpośredniego przekazywania, CancellationTokenSourcejak: var …

4
Jaka jest różnica między zwrotem anulowania a zwróceniem zadania?
Patrząc na różne przykłady C # Async CTP, widzę niektóre funkcje asynchroniczne, które zwracają void, i inne, które zwracają nieogólne Task. Rozumiem, dlaczego zwracanie a Task<MyType>jest przydatne do zwracania danych do dzwoniącego po zakończeniu operacji asynchronicznej, ale funkcje, które widziałem, które mają typ Taskzwracania, nigdy nie zwracają żadnych danych. Dlaczego …

5
Dlaczego powinienem preferować jedno zadanie „await Task.WhenAll” zamiast wielu oczekujących?
W przypadku, gdy nie zależy mi na kolejności wykonywania zadań i po prostu potrzebuję ich wszystkich, czy nadal powinienem używać await Task.WhenAllzamiast wielu await? np. jest DoWork2poniżej preferowanej metody DoWork1(i dlaczego?): using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> DoTaskAsync(string name, int timeout) { var …

5
Utwórz ukończone zadanie <T>
Implementuję metodę Task&lt;Result&gt; StartSomeTask()i tak się składa, że ​​znam wynik jeszcze przed wywołaniem metody. Jak utworzyć zadanie &lt;T&gt;, które zostało już zakończone? Oto, co obecnie robię: 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); return task; } Czy …

3
Czy dopuszczalne jest niewywoływanie metody Dispose () na obiekcie zadania TPL?
Chcę uruchomić zadanie w wątku w tle. Nie chcę czekać na zakończenie zadań. W .net 3.5 zrobiłbym to: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); W .net 4 TPL jest sugerowanym sposobem. Typowy zalecany wzór, który widziałem, to: Task.Factory.StartNew(() =&gt; { DoSomething(); }); Jednak StartNew()metoda zwraca Taskobiekt, który implementuje IDisposable. Wydaje się, …

2
Jak mogę czekać, aż Parallel.ForEach się zakończy
Używam TPL w moim bieżącym projekcie i używam Parallel.Foreach do przędzenia wielu wątków. Klasa Task zawiera Wait (), aby poczekać, aż zadanie zostanie ukończone. W ten sposób, jak mogę czekać, aż Parallel.ForEach zakończy się, a następnie przejść do wykonywania kolejnych instrukcji?

3
Jaka jest zaleta używania async z MVC5?
Jaka jest różnica pomiędzy: 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); } i: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task&lt;ActionResult&gt; Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { …

7
ASP.NET Web API OperationCanceledException, gdy przeglądarka anuluje żądanie
Gdy użytkownik ładuje stronę, wysyła jedno lub więcej żądań ajax, które trafiają do kontrolerów ASP.NET Web API 2. Jeśli użytkownik przejdzie na inną stronę, przed zakończeniem tych żądań ajax, żądania są anulowane przez przeglądarkę. Nasz ELMAH HttpModule następnie rejestruje dwa błędy dla każdego anulowanego żądania: Błąd 1: System.Threading.Tasks.TaskCanceledException: A task …

2
Różnica między await i ContinueWith
Czy ktoś może wyjaśnić, czy awaiti ContinueWithsą synonimami, czy nie w poniższym przykładzie. Próbuję po raz pierwszy skorzystać z TPL i przeczytałem całą dokumentację, ale nie rozumiem różnicy. Oczekuj : String webText = await getWebPage(uri); await parseData(webText); Kontynuuj z : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); Task continue = …




5
Dlaczego ta akcja asynchroniczna zawiesza się?
Mam wielowarstwową aplikację .Net 4,5 wywołującą metodę przy użyciu nowych asynci C #await słów kluczowych, które po prostu się zawieszają i nie rozumiem, dlaczego. Na dole mam metodę asynchroniczną, która rozszerza nasze narzędzie bazy danych OurDBConn(w zasadzie opakowanie dla bazowego DBConnectioni DBCommandobiektów): public static async Task&lt;T&gt; ExecuteAsync&lt;T&gt;(this OurDBConn dataSource, Func&lt;OurDBConn, …

3
Wyjątki zadania nie zostały zaobserwowane ani przez oczekiwanie na zadanie, ani przez dostęp do jego właściwości Exception. W rezultacie niezauważonym wyjątkiem był
Co to oznacza i jak go rozwiązać? Używam zadań TPL. Cały błąd Wyjątki zadania nie zostały zaobserwowane ani przez oczekiwanie na zadanie, ani przez dostęp do jego właściwości Exception. W rezultacie niezauważony wyjątek został ponownie zgłoszony przez wątek finalizatora. w System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

3
Bieżący SynchronizationContext nie może być używany jako TaskScheduler
Używam zadań do uruchamiania długotrwałych wywołań serwera w moim ViewModel, a wyniki są kierowane z powrotem przy Dispatcherużyciu TaskScheduler.FromSyncronizationContext(). Na przykład: var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() =&gt; { ... }) .ContinueWith(x =&gt; this.Message = "Completed" , context); Działa to dobrze, gdy uruchamiam aplikację. Ale …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.