Как запустить асинхронный код и вернуть значение на 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

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