Описание тега taskcompletionsource

TaskCompletionSource создает задачу<tresult> не привязан к делегату, обеспечивая доступ к стороне потребителя через свойство Task. </tresult>
5 ответов

Вернуть с await при переносе старого асинхронного шаблона в TaskCompletionSource?

Я изучаю C# Asnc-await pattern и в настоящее время читаю Concurrency in C# Cookbook от S. Cleary. Он обсуждает перенос старых асинхронных шаблонов без TAP с помощью TaskCompletionSource (TCS) в конструкции TAP. Чего я не понимаю, так это почему он п…
18 фев '19 в 10:48
1 ответ

Должны ли задачи, сгенерированные TaskCompletionSource быть Dispose()d?

Я использую TaskCompletionSource в моем программном обеспечении для распространения сетевых пакетов async / await методы. Так что в моем коде есть различные моменты, когда программное обеспечение должно ожидать демультиплексирования сетевого пакета …
18 фев '19 в 21:49
1 ответ

Какова цель TaskCreationOptions с TaskCompletionSource?

Что-то неясное для меня о внутренней работе TaskCompletionSource&lt;&gt;, При создании простого Task&lt;&gt; с использованием FactoryЯ ожидаю, что эта задача будет поставлена ​​в очередь в пуле потоков, если я не укажу TaskCreationOptions.LongRunnin…
1 ответ

Отмена асинхронного метода, который вызывает события

У меня есть безголовое приложение UWP, которое использует внешнюю библиотеку для подключения к последовательному устройству и отправки некоторых команд. Он запускает бесконечный цикл (в то время как истина) с 10-минутной паузой между циклами. Процес…
1 ответ

Как сохранить ожидаемое поведение с TaskCompletionSource.SetException?

(Это новая попытка в этом вопросе, которая теперь демонстрирует проблему лучше.) Допустим, у нас есть ошибочная задача (var faultedTask = Task.Run(() =&gt; { throw new Exception("test"); });) и мы ждем этого. await распакует AggregateException и бро…
1 ответ

Каков синхронный эквивалент TaskCompletionSource<T>?

У меня есть метод, который выглядит так: Task&lt;MyClass&gt; MyMethodAsync() { SendBluetoothMessageAsync(); var tcs = new TaskCompletionSource&lt;MyClass&gt;(); Bluetooth.MessageRecieved += (o, e) =&gt; tcs.SetResult(e.SomeProperty); //this removes …
15 окт '13 в 16:51
3 ответа

TaskCompletionSource throws "Была сделана попытка перевести задачу в конечное состояние, когда она уже выполнена"

Я хочу использовать TaskCompletionSource обернуть MyService это простой сервис: public static Task&lt;string&gt; ProcessAsync(MyService service, int parameter) { var tcs = new TaskCompletionSource&lt;string&gt;(); //Every time ProccessAsync is calle…
1 ответ

C# TaskCompletionSource не работает

У меня есть интересная проблема.. У меня есть метод входа, который работает сервис WCF. Я создал задание завершения и ждет, пока результат не придет. Проблема в том, что если я вызываю 2 раза метод входа, второй ничего не возвращает. Я ставлю точку …
08 июн '16 в 16:36
2 ответа

Не удается получить результаты TaskCompletionSource

Здравствуйте, у меня есть следующая проблема: Я хочу выполнить что-то похожее на транзакцию. Я хочу выполнить ряд async операции после получения внешнего триггера. Поэтому я использую TaskCompletionSource это устанавливается в методе, представляющем…
02 авг '18 в 07:06
3 ответа

Почему мой TCS не ждет?

async Ключевое слово действительно вызывает изменение CIL (даже если в методе нет ожидания), но в первую очередь это позволяет await присутствовать. Но я не ожидал, что произойдет следующее: static void Main(string[] args) { Task t = Go(); t.Wait();…
2 ответа

Обтекание библиотеки, использующей асинхронный шаблон на основе событий, для использования с Async/Await

Я использую шаблон async/await во всем коде. Однако есть один API, который использовал асинхронный шаблон, основанный на событиях. Я читал в MSDN и несколько ответов на Stackru, что способ сделать это - использовать TaskCompletionSource. Мой код: pu…
1 ответ

Как использовать TaskCompletionSource

У меня ситуация с несколькими производителями и одним потребителем. Я выбрал общий thread-safe ресурс, в котором все производители Enqueue Предметы. Однако я не знаю, как эффективно сделать производителя await для новых предметов, когда Dequeueиз эт…
0 ответов

Сделайте так, чтобы TaskCompletionSource<T>.Task запускался в фоновом режиме из запроса mvc asp.net.

В одном действии моих приложений MVC 4 у меня есть звонок: public ActionResult Test() { DownloadAsync("uri","file path"); return Content("OK"); } DownloadAsync вернуть задание, и я ожидаю увидеть DownloadAsync работать в фоновом режиме. Но я всегда …
21 янв '14 в 03:33
2 ответа

Как заменить контекст / планировщик задач синхронизации на другой внутри TaskCompletionSource.Task для ConfigureAwait(false)?

Предположим, я создал библиотеку, содержащую такой метод: Task MyLibraryMethodAsync() { var taskCompletionSource = new TaskCompletionSource&lt;object&gt;(); Action myWorkItem = () =&gt; { // Simulate some work. // Actual work items depend on input p…
1 ответ

Ожидание задачи никогда не завершается, хотя ее состояние переходит в RanToCompletion

Во-первых, извинения - я не могу воспроизвести это поведение в достаточно простом примере приложения. Эта функциональность работала до некоторого рефакторинга вызывающего кода. Я пытаюсь использовать TaskCompletionSource для оповещения об окончании …
28 окт '15 в 10:51
1 ответ

Ожидание TaskCompletionSource<T>, которое никогда не возвращает задачу

Я пытаюсь написать модульный тест вокруг асинхронного паба / подсистемы. В моем модульном тесте я создаю TaskCompletionSource&lt;int&gt; и назначьте ему значение в обратном вызове подписки. В рамках обратного вызова подписки я отписываюсь от публика…
16 янв '16 в 04:35
2 ответа

Что вызывает тупик?

Я сталкиваюсь с тупиковой проблемой в моем коде. К счастью, я смог воспроизвести проблему в следующем примере. Запустите как обычное консольное приложение.Net Core 2.0. class Class2 { static void Main(string[] args) { Task.Run(MainAsync); Console.Wr…
2 ответа

Реализовать ограниченный и буферизованный исполнитель заданий

Я хочу реализовать ограниченный и буферизованный исполнитель заданий. У него будет один метод: public class CappedBufferedExecutor { public CappedBufferedExecutor(int bufferCapping, int fillTimeInMillisec); public Task&lt;bool&gt; EnqueueAsync(strin…
1 ответ

Обходное решение SignalR для получения данных клиента с сервера

Я знаю, что SignalR не может получить возврат от клиента, когда вызов пришел с сервера. В github-репозитории SignalR я попросил обходной путь ( https://github.com/aspnet/SignalR/issues/1329), и они предлагают мне получить результат, отправив его с к…
1 ответ

Развертывание асинхронной операции и ее асинхронного обратного вызова в TaskCompletionSource

У меня есть метод в сервисе, который вызывается моей моделью представления для получения изображения. Изображение извлекается из внешней библиотеки (iOS API в Xamarin), которая использует механизм обратного вызова вместо ожидания. Чтобы сделать мой …