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

197
жду vs Task.Wait - тупик?

Я не совсем понимаю разницу между Task.Waitиawait . У меня есть что-то похожее на следующие функции в службе ASP.NET WebAPI: public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static...

191
HttpClient - Задача была отменена?

Он отлично работает, когда есть одна или две задачи, однако выдает ошибку «Задача была отменена», когда у нас в списке более одной задачи. List<Task> allTasks = new List<Task>(); allTasks.Add(....); allTasks.Add(....); Task.WaitAll(allTasks.ToArray(), configuration.CancellationToken);...

189
Какая польза для Task.FromResult <TResult> в C #

В C # и TPL ( Task Parallel Library ) Taskкласс представляет собой текущую работу, которая создает значение типа T. Я хотел бы знать, что нужно для метода Task.FromResult ? То есть: в сценарии, где у вас уже есть произведенная ценность, зачем нужно возвращать ее в задачу? Единственное, что приходит...

183
Вложенности ждут в Parallel.ForEach

В приложении метро мне нужно выполнить несколько вызовов WCF. Необходимо сделать значительное количество вызовов, поэтому мне нужно делать их в параллельном цикле. Проблема заключается в том, что параллельный цикл завершается до завершения всех вызовов WCF. Как бы вы рефакторинг это работать так,...

164
Как отменить задачу в ожидании?

Я играю с этими задачами Windows 8 WinRT и пытаюсь отменить задачу, используя метод, описанный ниже, и в какой-то момент это работает. Метод CancelNotification ДОЛЖЕН вызываться, что заставляет вас думать, что задача была отменена, но в фоновом режиме задача продолжает выполняться, затем после ее...

163
Когда утилизировать CancellationTokenSource?

Класс CancellationTokenSourceодноразовый. Быстрый просмотр Reflector доказывает использование KernelEvent(весьма вероятного) неуправляемого ресурса. Так CancellationTokenSourceкак не имеет финализатора, если мы не распорядимся им, сборщик мусора не сделает этого. С другой стороны, если вы...

162
Async / ожидание против BackgroundWorker

В последние несколько дней я тестировал новые возможности .net 4.5 и c # 5. Мне нравятся его новые функции async / await. Ранее я использовал BackgroundWorker для обработки более длинных процессов в фоновом режиме с отзывчивым пользовательским интерфейсом. Мой вопрос: после этих замечательных новых...

145
Что касается использования 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( () => Console.WriteLine("Hello from...

139
Параллельный foreach с асинхронной лямбдой

Я хотел бы обрабатывать коллекцию параллельно, но у меня проблемы с ее реализацией, поэтому я надеюсь на некоторую помощь. Проблема возникает, если я хочу вызвать метод, помеченный как async в C #, в лямбда-выражении параллельного цикла. Например: var bag = new ConcurrentBag<object>();...

137
Почему CancellationToken отличается от CancellationTokenSource?

Я ищу объяснение того, почему .NET CancellationTokenstruct была введена в дополнение к CancellationTokenSourceклассу. Я понимаю, как следует использовать API, но хочу также понять, почему он так устроен. Т.е. почему у нас: var cts = new CancellationTokenSource();...

128
В чем разница между возвратом void и возвратом задачи?

Просматривая различные образцы C # Async CTP, я вижу, что одни асинхронные функции возвращают void, а другие возвращают неуниверсальные Task. Я могу понять, почему возвращение a Task<MyType>полезно для возврата данных вызывающей стороне после завершения асинхронной операции, но функции,...

127
Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?

В случае, если меня не волнует порядок выполнения задач и мне просто нужно, чтобы они все выполнялись, следует ли мне использовать await Task.WhenAllвместо нескольких await? например, DoWork2ниже предпочтительный метод DoWork1(и почему?): using System; using System.Threading.Tasks; namespace...

125
Создать завершенную задачу <T>

Я реализую метод Task<Result> StartSomeTask()и знаю результат еще до вызова метода. Как мне создать Task <T> , который уже выполнен? Вот чем я сейчас занимаюсь: private readonly Result theResult = new Result(); public override Task<Result> StartSomeTask() { var task = new...

123
Как мне дождаться завершения Parallel.ForEach

Я использую TPL в своем текущем проекте и использую Parallel.Foreach для вращения множества потоков. Класс Task содержит Wait (), чтобы дождаться завершения задачи. Как я могу дождаться завершения Parallel.ForEach, а затем перейти к выполнению следующих...

123
Считается ли приемлемым не вызывать Dispose () для объекта задачи TPL?

Я хочу запустить задачу в фоновом потоке. Не хочу ждать завершения задач. В .net 3.5 я бы сделал это: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); В .net 4 рекомендуется использовать TPL. Я видел рекомендуемый общий шаблон: Task.Factory.StartNew(() => { DoSomething(); }); Однако...

119
ASP.NET Web API OperationCanceledException, когда браузер отменяет запрос

Когда пользователь загружает страницу, он выполняет один или несколько запросов ajax, которые попадают в контроллеры ASP.NET Web API 2. Если пользователь переходит на другую страницу до того, как эти запросы ajax завершатся, запросы отменяются браузером. Затем наш ELMAH HttpModule регистрирует две...

119
Разница между await и ContinueWith

Может ли кто-нибудь объяснить, являются ли awaitи ContinueWithсинонимами или нет, в следующем примере. Я пытаюсь использовать TPL впервые, читал всю документацию, но не понимаю разницы. Жду : String webText = await getWebPage(uri); await parseData(webText); ContinueWith : Task<String> webText...

116
Параллельное выполнение двух асинхронных задач и сбор результатов в .NET 4.5

Некоторое время я пытался получить то, что, как мне казалось, было бы просто работать с .NET 4.5. Я хочу запустить две длительные задачи одновременно и собрать результаты лучшим способом C # 4.5 (RTM) Следующее работает, но мне это не нравится, потому что: Я хочу Sleepбыть асинхронным методом,...