Запитання з тегом «task-parallel-library»

Паралельна бібліотека завдань є частиною .NET Framework з .NET 4. Це набір API, що дозволяє розробникам програмувати асинхронні програми.

4
Маркер відміни в конструкторі завдань: чому?
Деякі System.Threading.Tasks.Taskконструктори приймають CancellationTokenза параметр: CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task (/* method */, source.Token); Що мене бентежить з цього приводу, це те, що зсередини тіла методу не існує можливості реально дістатися до переданого маркера (наприклад, нічого подібного Task.CurrentTask.CancellationToken). Маркер повинен надаватися через якийсь інший механізм, …

6
Яка різниця між Task.Start / Wait та Async / Await?
Я можу чогось бракувати, але яка різниця між тим, що робити: 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); }

11
Коли слід використовувати TaskCompletionSource <T>?
Все, що він знає, AFAIK - це те, що в якийсь момент його SetResultабо SetExceptionметод викликають для завершення Task&lt;T&gt;викритого через його Taskвластивість. Іншими словами, він виступає як виробник для Task&lt;TResult&gt;та його завершення. Я бачив тут приклад: Якщо мені потрібен спосіб виконати функцію асинхронно і мати завдання для представлення цієї операції. …

11
Немає ConcurrentList <T> у .Net 4.0?
Я був в захваті від того, що побачив нову область System.Collections.Concurrentімен у. Net 4.0, досить приємно! Я бачив ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBagі BlockingCollection. Одне, чого, здається, загадково не вистачає, - це ConcurrentList&lt;T&gt;. Чи повинен я сам це написати (або зняти з Інтернету :))? Я пропускаю тут щось очевидне?


3
очікуємо vs Task.Wait - Тупик?
Я не зовсім розумію різницю між Task.Waitі await. У сервісі ASP.NET WebAPI у мене є щось подібне до таких функцій: public class TestController : ApiController { public static async Task&lt;string&gt; Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task&lt;string&gt; Bar() { return await Foo(); } public async static …

6
HttpClient - завдання скасовано?
Це добре працює, коли є одна або дві задачі, однак видає помилку "Завдання було скасовано", коли у нас є більше одного завдання. List&lt;Task&gt; allTasks = new List&lt;Task&gt;(); allTasks.Add(....); allTasks.Add(....); Task.WaitAll(allTasks.ToArray(), configuration.CancellationToken); private static Task&lt;T&gt; HttpClientSendAsync&lt;T&gt;(string url, object data, HttpMethod method, string contentType, CancellationToken token) { HttpRequestMessage httpRequestMessage = new HttpRequestMessage(method, …

7
Яка різниця між Task.Run () та Task.Factory.StartNew ()
У мене є метод: private static void Method() { Console.WriteLine("Method() started"); for (var i = 0; i &lt; 20; i++) { Console.WriteLine("Method() Counter = " + i); Thread.Sleep(500); } Console.WriteLine("Method() finished"); } І я хочу розпочати цей метод у новому завданні. Я можу розпочати таке завдання, як це var task …

6
Яке використання Task.FromResult <TResult> у C #
У C # і TPL ( бібліотека паралельних завдань ) Taskклас представляє роботу, що триває, що створює значення типу T. Я хотів би знати, у чому полягає потреба у методі Task.FromResult ? Тобто: У сценарії, коли у вас вже є отримана цінність під рукою, у чому полягає необхідність повернути її …

9
Гніздування чекають у Parallel.ForEach
У програмі метро мені потрібно виконати ряд дзвінків WCF. Здійснюється значна кількість дзвінків, тому мені потрібно робити їх у паралельному циклі. Проблема полягає в тому, що паралельний цикл виходить до завершення дзвінків WCF. Як би ви відреагували, щоб це працювало так, як очікувалося? var ids = new List&lt;string&gt;() { "1", …

4
Як скасувати завдання в очікуванні?
Я граю з цими завданнями Windows 8 WinRT, і я намагаюся скасувати завдання за допомогою наведеного нижче методу, і воно працює до певного моменту. Метод CancelNotification НЕ викликає, завдяки чому ви думаєте, що завдання було скасовано, але на задньому плані завдання продовжує працювати, а після його виконання статус Завдання завжди …

7
Коли розпоряджатися CancellationTokenSource?
Клас CancellationTokenSourceодноразовий. Швидкий погляд у Reflector доводить використання KernelEvent(дуже ймовірно) некерованого ресурсу. З тих пірCancellationTokenSource немає фіналізатора, якщо ми не розпорядимось цим, GC не зробить цього. З іншого боку, якщо ви подивитеся на зразки, перелічені у статті MSDN Скасування в керованих нитках , токена має лише один фрагмент коду. Який …

4
Асинхронізація / очікування проти BackgroundWorker
За останні кілька днів я перевірив нові можливості .net 4.5 та c # 5. Мені подобаються його нові функції асинхронізації / очікування. Раніше я використовував BackgroundWorker для обробки довших процесів у фоновому режимі з чуйним інтерфейсом. Моє запитання: після отримання цих нових приємних функцій, коли я повинен використовувати функцію async …

2
Що стосується використання Task.Start (), Task.Run () та Task.Factory.StartNew ()
Щойно я побачив 3 підпрограми щодо використання TPL, які виконують ту саму роботу; ось код: public static void Main() { Thread.CurrentThread.Name = "Main"; // Create a task and supply a user delegate by using a lambda expression. Task taskA = new Task( () =&gt; Console.WriteLine("Hello from taskA.")); // Start the …

5
Паралельне передбачення з асинхронною лямбда
Я хотів би паралельно обробляти колекцію, але у мене виникають проблеми з її реалізацією, тому я сподіваюся на допомогу. Проблема виникає, якщо я хочу викликати метод, позначений асинхронією в C #, в межах лямбда паралельного циклу. Наприклад: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, async item =&gt; { // some pre …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.