Вопросы с тегом «task-parallel-library»

Библиотека параллельных задач является частью .NET Framework начиная с .NET 4. Это набор API, позволяющий разработчикам программировать асинхронные приложения.

5
Пример async / await, вызывающий тупик
Я столкнулся с некоторыми передовыми практиками асинхронного программирования с использованием ключевых слов async/ awaitслов в C # (я новичок в C # 5.0). Один из полученных советов был следующим: Стабильность: знайте свои контексты синхронизации ... Некоторые контексты синхронизации не реентерабельные и однопоточные. Это означает, что только одна единица работы может …

3
Правильный способ реализовать нескончаемую задачу. (Таймеры против задачи)
Итак, мое приложение должно выполнять действие почти непрерывно (с паузой в 10 секунд или около того между каждым запуском), пока приложение работает или запрашивается отмена. Необходимая работа может занять до 30 секунд. Не лучше ли использовать System.Timers.Timer и использовать AutoReset, чтобы убедиться, что он не выполняет действие до завершения предыдущего …

7
Есть ли замена System.Threading.Timer на основе задач?
Я новичок в задачах .Net 4.0, и мне не удалось найти то, что, как я думал, будет заменой на основе задач или реализацией таймера, например периодической задачей. Что-то подобное существует? Обновление Я придумал то, что, как мне кажется, является решением моих потребностей, которое заключается в том, чтобы обернуть функциональность «Таймер» …

3
Необходимо понимать использование SemaphoreSlim
Вот код, который у меня есть, но я не понимаю, что SemaphoreSlimпроисходит. async Task WorkerMainAsync() { SemaphoreSlim ss = new SemaphoreSlim(10); List<Task> trackedTasks = new List<Task>(); while (DoMore()) { await ss.WaitAsync(); trackedTasks.Add(Task.Run(() => { DoPollingThenWorkAsync(); ss.Release(); })); } await Task.WhenAll(trackedTasks); } void DoPollingThenWorkAsync() { var msg = Poll(); if (msg …

7
Рекомендуется ли использовать prevTask.Wait () с ContinueWith (из библиотеки задач)?
Поэтому мне недавно сказали, что то, как я использую .ContinueWith для задач, было неправильным способом их использования. Мне еще предстоит найти доказательства этого в Интернете, поэтому я спрошу вас, ребята, и посмотрю, какой будет ответ. Вот пример того, как я использую .ContinueWith: public Task DoSomething() { return Task.Factory.StartNew(() => { …

7
Task.Run с параметрами?
Я работаю над многозадачным сетевым проектом, и я новичок Threading.Tasks. Я реализовал простой, Task.Factory.StartNew()и мне интересно, как мне это сделать Task.Run()? Вот базовый код: Task.Factory.StartNew(new Action<object>( (x) => { // Do something with 'x' }), rawData); Я заглянул System.Threading.Tasks.Taskв обозревателе объектов , и я не мог найти , Action<T>как параметр. …

4
Есть ли что-нибудь вроде асинхронного BlockingCollection <T>?
Я хотел бы получить awaitрезультат BlockingCollection&lt;T&gt;.Take()асинхронно, чтобы я не блокировал поток. Ищу что-нибудь подобное: var item = await blockingCollection.TakeAsync(); Я знаю, что могу это сделать: var item = await Task.Run(() =&gt; blockingCollection.Take()); но это как бы убивает всю идею, потому что ThreadPoolвместо этого блокируется другой поток (из ). Есть ли …

2
Замена параллельной библиотеки задач для BackgroundWorker?
Есть ли в параллельной библиотеке задач что-нибудь, что можно было бы считать заменой или улучшением по сравнению с классом BackgroundWorker? У меня есть приложение WinForms с пользовательским интерфейсом в стиле мастера, и оно выполняет некоторые длительные задачи. Я хочу иметь гибкий пользовательский интерфейс со стандартным индикатором выполнения и возможностью отмены …

6
Как я могу предотвратить синхронное продолжение задачи?
У меня есть код библиотеки (сети сокетов), который предоставляет TaskAPI-интерфейс для ожидающих ответов на запросы на основе TaskCompletionSource&lt;T&gt;. Однако в TPL есть недостаток, заключающийся в невозможности предотвратить синхронное продолжение. Я бы хотел либо: сообщить, TaskCompletionSource&lt;T&gt;что это не должно позволять вызывающим абонентам подключаться TaskContinuationOptions.ExecuteSynchronously, или установите результат ( SetResult/ TrySetResult) таким …

2
Как лучше всего поймать исключение в задаче?
С System.Threading.Tasks.Task&lt;TResult&gt;, мне нужно управлять исключениями, которые могут быть выброшены. Я ищу лучший способ сделать это. До сих пор я создал базовый класс, который управляет всеми неперехваченными исключениями внутри вызова.ContinueWith(...) Мне интересно, есть ли лучший способ сделать это. Или даже если это хороший способ сделать это. public class BaseClass { …

3
Почему продолжения Task.When Все выполняются синхронно?
Я только что сделал любопытное замечание относительно Task.WhenAllметода при работе на .NET Core 3.0. Я передал простую Task.Delayзадачу в качестве единственного аргумента Task.WhenAllи ожидал, что завернутая задача будет вести себя идентично исходной задаче. Но это не так. Продолжения исходной задачи выполняются асинхронно (что желательно), а продолжения кратныTask.WhenAll(task) оболочек выполняются синхронно …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.