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

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

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

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

5
Чому я віддаю перевагу синглу "Очікуйте завдання. Коли все" над кількома очікуваннями?
У разі, якщо я не дбаю про порядок виконання завдань і просто потрібно, щоб вони все виконали, чи потрібно все-таки використовувати 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()і випадково знаю результат вже до того, як метод буде викликаний. Як створити завдання &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 …

3
Чи вважається прийнятним не викликати Dispose () на об'єкт TPL Task?
Я хочу запустити завдання для запуску на фоновому потоці. Я не хочу чекати завершення завдань. У .net 3.5 я зробив би це: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); У .net 4 TPL є запропонованим способом. Загальна модель, яку я бачив, рекомендувала: Task.Factory.StartNew(() =&gt; { DoSomething(); }); Однак StartNew()метод повертає Taskоб'єкт, який …

2
Як я можу зачекати, поки паралель.ForEach завершиться
Я використовую TPL у своєму поточному проекті та використовую Parallel.Foreach для спінінгу багатьох потоків. Клас Завдання містить 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) { IdentityResult …

7
ASP.NET Web API OperationCanceledException, коли браузер скасовує запит
Коли користувач завантажує сторінку, він робить один або кілька ajax запитів, які потрапляють на контролери ASP.NET Web API 2. Якщо користувач переходить на іншу сторінку, перш ніж ці запити ajax завершаться, браузер скасовує запити. Наш ELMAH HttpModule записує дві помилки для кожного скасованого запиту: Помилка 1: System.Threading.Tasks.TaskCanceledException: A task was …

2
Різниця між очікуванням та ContinueWith
Чи може хтось пояснити, чи є awaitі ContinueWithє синонімами чи не в наступному прикладі. Я намагаюся використовувати TPL вперше і читаю всю документацію, але не розумію різниці. Чекайте : String webText = await getWebPage(uri); await parseData(webText); ПродовжитиЗ : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); Task continue = webText.ContinueWith((task) =&gt; …

6
Виконайте паралельно дві задачі на асинхронізацію та збирайте результати в .NET 4.5
Я деякий час намагався отримати щось, на що думав, що це буде просто працювати з .NET 4.5 Я хочу звільнити одночасно два тривалі завдання та збирати результати найкращим чином C # 4.5 (RTM) Наступні роботи, але це мені не подобається, тому що: Я хочу Sleepбути асинхронним методом, щоб він міг …

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, який викликає метод, використовуючи нове asyncі awaitключове слово C #, яке просто висить, і я не можу зрозуміти, чому. Внизу у мене є метод асинхронізації, який розширює нашу утиліту бази даних OurDBConn(в основному обгортку для базових DBConnectionта DBCommandоб'єктів): public static async Task&lt;T&gt; ExecuteAsync&lt;T&gt;(this OurDBConn …

3
Виключення (-ів) Завдання не спостерігалися ні в режимі "Очікування завдання", ні в доступі до його властивості "Виняток". Як результат, незабезпеченим винятком став
Що це означає і як це вирішити? Я використовую завдання TPL. Вся помилка Виключення (-ів) Завдання не спостерігалися ні в режимі "Очікування завдання", ні в доступі до його властивості "Виняток". Як результат, непомічене виключення було скинуто потоком фіналізатора. на System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

4
Найпростіший спосіб зробити метод пожежі і забути в c # 4.0
Мені дуже подобається це питання: Найпростіший спосіб зробити вогонь і забути метод в C #? Я просто хочу знати, що тепер, коли у нас є розширення Parallel у C # 4.0, чи є кращий чистіший спосіб зробити Fire &amp; Forget за допомогою Parallel linq?

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

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