Task.Run() с прослушивателем событий IBM MQ с MessageReceivedEvent [оптимизация]C#

Место общения программистов C#
Ответить
Anonymous
 Task.Run() с прослушивателем событий IBM MQ с MessageReceivedEvent [оптимизация]

Сообщение Anonymous »


Я разработал фоновое задание по прослушиванию IBM MQ.

Каждый раз, когда происходит событие MessageReceivedEvent, вызывается обработчик события.

Вот код

защищенное переопределение асинхронной задачи ExecuteAsync(CancellationToken cancelToken) { // Это компромисс. async выполняется синхронно, пока не встретит первое ожидание и поток не будет заблокирован. ожидайте Task.Yield(); _logger.LogInformation("Начать задание"); cancelToken.Register(() => _logger.LogInformation($"{nameof(job)}::{nameof(ExecuteAsync)}: Задача потребителя IBM MQ останавливается"); _mqConsumerTask = Task.Run(() => // это заменяет async/await? Как оптимизировать? { _mqConsumer.MessageReceivedEvent += OnMessageReceivedEvent; ConnectToMq (токен отмены); }, токен отмены); } Здесь вы можете видеть, что я использую Task.Run и регистрирую здесь обработчик событий. Когда я пытаюсь использовать ключевое слово await в следующем EventHandler, я получаю ошибку времени компиляции. Это мой обработчик событий, который является обработчиком событий aysnc

private async void OnMessageReceivedEvent(отправитель объекта, IbmMQMessageReceivedEventArgs eventArgs) { // здесь находится некоторая асинхронная работа, связанная с БД } Как вы будете оптимизировать этот код? Я немного растерян, так как не понимаю, оптимизирован ли этот код с точки зрения производительности, как это сделал бы async/await, если бы я использовал его вместо Task.Run.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»