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

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

5
Почему CancellationToken отличается от CancellationTokenSource?
Я ищу объяснение того, почему .NET CancellationTokenstruct была введена в дополнение к CancellationTokenSourceклассу. Я понимаю, как следует использовать API, но хочу также понять, почему он так устроен. Т.е. почему у нас: var cts = new CancellationTokenSource(); SomeCancellableOperation(cts.Token); ... public void SomeCancellableOperation(CancellationToken token) { ... token.ThrowIfCancellationRequested(); ... } вместо прямой передачи, …

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

5
Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?
В случае, если меня не волнует порядок выполнения задач и мне просто нужно, чтобы они все выполнялись, следует ли мне использовать await Task.WhenAllвместо нескольких await? например, DoWork2ниже предпочтительный метод DoWork1(и почему?): using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> DoTaskAsync(string name, int timeout) { var …

5
Создать завершенную задачу <T>
Я реализую метод Task&lt;Result&gt; StartSomeTask()и знаю результат еще до вызова метода. Как мне создать Task &lt;T&gt; , который уже выполнен? Вот чем я сейчас занимаюсь: 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; } Есть ли …

3
Считается ли приемлемым не вызывать Dispose () для объекта задачи TPL?
Я хочу запустить задачу в фоновом потоке. Не хочу ждать завершения задач. В .net 3.5 я бы сделал это: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); В .net 4 рекомендуется использовать TPL. Я видел рекомендуемый общий шаблон: Task.Factory.StartNew(() =&gt; { DoSomething(); }); Однако StartNew()метод возвращает Taskобъект, который реализует IDisposable. Похоже, что люди, …

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

3
В чем преимущество использования async с MVC5?
В чем разница между: 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); } и: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task&lt;ActionResult&gt; Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { …

7
ASP.NET Web API OperationCanceledException, когда браузер отменяет запрос
Когда пользователь загружает страницу, он выполняет один или несколько запросов ajax, которые попадают в контроллеры ASP.NET Web API 2. Если пользователь переходит на другую страницу до того, как эти запросы ajax завершатся, запросы отменяются браузером. Затем наш ELMAH HttpModule регистрирует две ошибки для каждого отмененного запроса: Ошибка 1: System.Threading.Tasks.TaskCanceledException: A …

2
Разница между await и ContinueWith
Может ли кто-нибудь объяснить, являются ли awaitи ContinueWithсинонимами или нет, в следующем примере. Я пытаюсь использовать TPL впервые, читал всю документацию, но не понимаю разницы. Жду : String webText = await getWebPage(uri); await parseData(webText); ContinueWith : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); Task continue = webText.ContinueWith((task) =&gt; parseData(task.Result)); webText.Start(); …

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

13
Как ограничить количество одновременных операций асинхронного ввода-вывода?
// 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) =&gt; { var client = new HttpClient(); var html = await client.GetStringAsync(url); }); Проблема в том, что …

5
Почему зависает это асинхронное действие?
У меня есть многоуровневое приложение .Net 4.5, вызывающее метод с использованием ключевых слов C # new asyncи, awaitкоторые просто зависают, и я не понимаю, почему. Внизу у меня есть асинхронный метод, который расширяет нашу утилиту базы данных OurDBConn(в основном оболочка для базовых объектов DBConnectionи DBCommandобъектов): public static async Task&lt;T&gt; ExecuteAsync&lt;T&gt;(this …

3
Исключения задачи не наблюдались ни при ожидании задачи, ни при доступе к ее свойству Exception. В результате ненаблюдаемое исключение было
Что это значит и как решить? Использую задачи TPL. Вся ошибка Исключения задачи не наблюдались ни при ожидании задачи, ни при доступе к ее свойству Exception. В результате ненаблюдаемое исключение было повторно создано потоком финализатора. в System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

3
Текущий контекст синхронизации нельзя использовать в качестве планировщика задач.
Я использую задачи для выполнения длительных вызовов сервера в моей модели просмотра, и результаты снова упорядочиваются при Dispatcherиспользовании TaskScheduler.FromSyncronizationContext(). Например: var context = TaskScheduler.FromCurrentSynchronizationContext(); this.Message = "Loading..."; Task task = Task.Factory.StartNew(() =&gt; { ... }) .ContinueWith(x =&gt; this.Message = "Completed" , context); Это нормально работает, когда я запускаю приложение. Но …

6
Параметр по умолчанию для CancellationToken
У меня есть асинхронный код, к которому я хотел бы добавить CancellationToken. Однако есть много реализаций, в которых это не нужно, поэтому я хотел бы иметь параметр по умолчанию - возможно CancellationToken.None. Однако, Task&lt;x&gt; DoStuff(...., CancellationToken ct = null) дает Значение типа '' нельзя использовать в качестве параметра по умолчанию, …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.