Как запустить асинхронный код и вернуть значение на C#?C#

Место общения программистов C#
Ответить
Anonymous
 Как запустить асинхронный код и вернуть значение на C#?

Сообщение Anonymous »

Привет, я работаю над приложением C#. У меня есть асинхронный метод, который будет читать данные из Кафки. Ниже представлена ​​моя реализация.

Код: Выделить всё

public async Task SubscribeAsync(string topicName)
{
ConsumeResult consumeResult;
await Task.Run(() =>
{
consumer.Subscribe(topicName);
try
{
consumeResult = consumer.Consume();
ProcessEvents(consumeResult.Value);
}
catch (ConsumeException e)
{
logger.Error($"Consume error: {e.Error.Reason}");
}
});
}
Я называю это

Код: Выделить всё

 var response = kafkaClient.SubscribeAsync(topicConfigCollection.GetTopicName("TimephaseEventTopic"));
response.Wait();
response.IsCompletedSuccessfully.ShouldBeTrue();
Проблема в приведенном выше коде заключается в том, что всякий раз, когда я отлаживаю, он зависает, когда приходит ожидание, и ничего не происходит. Если я удалю await Task.Run(), я смогу войти внутрь метода и увидеть результат ConsumerResult. Могу ли я узнать, как это правильно реализовать? Любая помощь будет оценена по достоинству. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/570 ... value-in-c
Ответить

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

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

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

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

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