Task.FromResult
TaskCompletionSource
Плюс асинки требуют горячих тасков, а тут холодный
А это Task.FromResult, а не new Task
Горячая таска уже начата, холодная ждёт старта
В таком виде - на запуск и аллокацию памяти под таску будет потрачено больше времени чем на сам код таски. Смысла нет этот код делать асинхронным, очередь не НАСТОЛЬКО медленная
Вот и думаю, как лучше
А как можно родить холодную?
Никак. Это микроскопический по размеру код без IO. Не нужно тут Task, вообще
Сказали что нужен метод для асинхронного получения кадров. Вот тут он будет вызываться:
Тут смысла нет, если только не Dispatcher thread
Конкретно тут я вообще не вижу смысла. Если _frameBuffer - это простая очередь, то TryDequeue вернётся сразу, с результатом или без.
_frameBuffer какого типа?
Вопрос в том, как реализован TryGet. Если там гиг копировать, то у него гуй раком встанет.
А что он должен делать? Это попытка polling'ом заниматься каждые 10 мс?
Это попытка давить гуся на ровном месте.
Ладно, молчу ¯\_(ツ)_/¯
ConcurrentQueue
Обсуждают сегодня