task-parallel-library- все статьи тега
Исключение Task OutOfMemory не завершает процесс
У меня есть следующий код задачи с удачным и на сбойных продолжениях. Task<IEnumerable<IDictionaryObject>> getParameters = _parametersRequester.BeginGetParametersBulk(requestJob); var processParameters = getParameters.ContinueWith((x) => { //Do some processing }, TaskContinuationOptions.OnlyOnRanToCompletion); getParameters.ContinueWith((x) => { AggregateException ex = x.Exception; ex.Flatten().Handle(ie => HandleException(requestJob ...
Как получить результат или возвращаемое значение задачи?
Может ли кто-нибудь объяснить мне, как вернуть результат задания? В настоящее время я пытаюсь сделать следующее, Но мои задачи не возвращают мой список, который я ожидаю? В чем здесь проблема? static void Main() { List<Task> tasks = new List<Task>(); List<string> sha256_hashes = new List<string>(); List<string> results = new List<string>(); sha256_hashes.Add("hash00"); sha256_hashes.Add("hash01"); sha256_hashes.Add("hash03"); fore ...
Асинхронно ждать завершения задачи с таймаутом
Я хочу подождать Task в комплекте с некоторыми специальными правилами: Если он не был завершен через X миллисекунд, я хочу отобразить сообщение для пользователя. И если он не был завершен через Y миллисекунд, я хочу автоматически запрос на отмену. Я могу использовать задач.ContinueWith асинхронно ждать завершения задачи (т. е. планировать действие, которое будет выполнено, когда задача будет завершена), но это не позволяет укажите время ожидания. Я могу использовать задач.Подождите синхронно ж ...
WaitAll vs WhenAll
в чем разница между Task.WaitAll() и Task.WhenAll() от асинхронного CTP ? Можете ли вы предоставить пример кода для иллюстрации различных вариантов использования ? ...
Когда использовать задачу.Задержка, когда использовать поток.Спать?
есть ли хорошие правила для того, когда использовать задач.Задержка и нить.Спи? в частности, существует ли минимальное значение для обеспечения того, чтобы один был эффективным/эффективным по сравнению с другим? наконец, начиная с задачи.Задержка вызывает контекстное переключение на асинхронный / ожидающий конечный автомат, есть ли накладные расходы на его использование? ...
Токен отмены в конструкторе задач: почему?
некоторых System.Threading.Tasks.Task конструкторы возьми CancellationToken параметр: CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task (/* method */, source.Token); что меня удивляет в этом то, что нет никакого способа от внутри тело метода, чтобы фактически получить маркер, переданный в (например, ничего подобного Task.CurrentTask.CancellationToken). Маркер должен быть предоставлен через какой-то другой механизм, такой как объект состояния или захваченный в л ...
Когда следует использовать TaskCompletionSource?
AFAIK, все, что он знает, это то, что в какой-то момент его SetResult или SetException метод вызывается для завершения Task<T> разоблачили через Task собственность. другими словами, он выступает в качестве производителя для Task<TResult> и до его завершения. Я видел здесь пример : если мне нужен способ выполнить функцию асинхронно и иметь задачу представлять, что операция. public static Task<T> RunAsync<T>(Func<T> function) { if (function == null) th ...
Создание завершенной задачи
Я хочу создать завершенный Task (не Task<T>). Есть ли что-то встроенное в .NET для этого? соответствующий вопрос: создать завершенную задачу ...
Async / await vs BackgroundWorker
в последние несколько дней я тестировал новые возможности .net 4.5 и c# 5. Мне нравятся его новые функции async / await. Раньше я использовал BackgroundWorker для обработки более длительных процессов в фоновом режиме с адаптивным интерфейсом. мой вопрос: после того, как эти хорошие новые функции, когда я должен использовать async / await и когда BackgroundWorker? Каковы общие сценарии для обоих? ...
В чем разница между возвращением void и возвращением задачи?
при просмотре различных образцов C# Async CTP я вижу некоторые асинхронные функции, которые возвращают void и другие, которые возвращают необщего Task. Я могу понять, почему возвращение Task<MyType> полезно возвращать данные вызывающему при завершении асинхронной операции, но функции, которые я видел, имеют тип возврата Task никогда не возвращает никаких данных. Почему бы не вернуться void? ...
ASP.NET Web API OperationCanceledException когда браузер отменяет запрос
когда пользователь загружает страницу, он делает один или несколько запросов ajax, которые попадают ASP.NET Web API 2 контроллеры. Если пользователь переходит на другую страницу, до завершения этих запросов ajax запросы отменяются браузером. Затем наш Elmah HttpModule регистрирует две ошибки для каждого отмененного запроса: Ошибка 1: System.Threading.Tasks.TaskCanceledException: A task was canceled. at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Ru ...
Текущий SynchronizationContext не может использоваться в качестве TaskScheduler
Я использую задачи для запуска длительных вызовов сервера в моем ViewModel и результаты маршалируются обратно на Dispatcher С помощью TaskScheduler.FromSyncronizationContext(). Например: var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() => { ... }) .ContinueWith(x => this.Message = "Completed" , context); это прекрасно работает, когда я запустить приложение. Но когда я ...
Как ограничить количество одновременных асинхронных операций ввода-вывода?
// 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); }); вот проблема, он запускает 1000 + одновременных веб-запросов. Существует ли простой способ ограничить одновременное количество этих асинхронных HTTP-запросов? Так что не более 20 веб-страни ...
Как я могу предотвратить Синхронное продолжение задачи?
у меня есть некоторые библиотеки (сокет сети) код, который обеспечивает Task-основанный API для ожидающих ответов на запросы, основанный на TaskCompletionSource<T>. Однако в TPL есть раздражение в том, что, похоже, невозможно предотвратить синхронные продолжения. Что бы я как чтобы быть в состоянии сделать это: рассказать TaskCompletionSource<T> то есть не должно позволять абонентам присоединяться с TaskContinuationOptions.ExecuteSynchronously или установить результат (SetResult/Tr ...
Пример async / await, который вызывает взаимоблокировку
я наткнулся на некоторые рекомендации по асинхронному программированию с использованием ключевых слов async/await c#(я новичок в c# 5.0). один из приведенных советов был следующим: стабильность: знайте свои контексты синхронизации ... Некоторые контексты синхронизации не являются реентерабельными и однопоточными. Это означает, что только одна единица работы может быть выполнена в контексте в данный момент времени. Примером этого является поток пользовательского интерфейса Windows или ASP.NET ...
Как поставить задачу в спящий режим (или задержку) в C# 4.0?
здесь задач.Задержка в .NET 4.5 Как я могу сделать то же самое в .NET 4.0? ...
Разница между TPL & async/await (обработка потоков)
пытаясь понять разницу между TPL & async/await когда дело доходит до создания потока. я считаю, что ОСАГО (TaskFactory.StartNew) работает аналогично ThreadPool.QueueUserWorkItem в том, что он ставит в очередь работу над потоком в пуле потоков. Это конечно, если вы не используете TaskCreationOptions.LongRunning, который создает новый поток. я думал async/await будет работать точно так по существу: TPL: Factory.StartNew( () => DoSomeAsyncWork() ) .ContinueWith( (antecedent) = ...
Есть ли что-нибудь вроде асинхронного BlockingCollection?
Я хочу await в результате BlockingCollection<T>.Take() асинхронно, поэтому я не блокирую поток. Ищем что-нибудь вроде этого: var item = await blockingCollection.TakeAsync(); Я знаю, что мог бы сделать это: var item = await Task.Run(() => blockingCollection.Take()); но это как-то убивает всю идею, потому что другой поток (о ThreadPool) блокируется вместо этого. есть ли альтернатива? ...
Есть ли общая задача.WaitAll?
Я запустить несколько параллельных задач, как это: var tasks = Enumerable.Range(1, 500) .Select(i => Task.Factory.StartNew<int>(ProduceSomeMagicIntValue)) .ToArray(); и затем присоединиться к ним с Task.WaitAll(tasks); на этой последней строке я получаю синий волнистый маркер под tasks, с предупреждением: Co-variant array conversion from Task[] to Task[] can cause run-time exception on write operation. Я понимаю, почему я получаю это сообщение, но есть способ обойти ...