это продолжение предыдущего вопроса, который я разместил Calling асинхронный метод с использованием Task.Run кажется неправильным?
Я думал, что код, написанный подрядчиком, был неправильным, но, следуя предоставленным ответам, я теперь задаюсь вопросом, виновата ли в этом библиотека. Эта библиотека предоставляет два метода, которые мне нужно использовать. Один возвращает «шаблон», а другой использует часть этого шаблона (во всяком случае, в моей реализации). Но оба являются async
методами, возвращающими Tasks
.
Чтобы объяснить, что в моей библиотеке есть методы:
public Task<TemplateInfo> TemplateInfo(TemplateInfoRequest request);
public Task<List<EmailResult>> SendMessageTemplate(SendMessageTemplateRequest request);
Мне нужно назвать это так:
public bool SendMessage()
{
var template = TemplateInfo(...);
var message = //use template to create message
var sendResponse = SendMessageTemplate(message);
return sendResponse.Count > 0;
}
Таким образом, второй вызов зависит от первого. Вот где асинхронность не имеет для меня смысла. Я не могу и не хочу запускать их параллельно. Я хочу запускать их последовательно. Я хочу, чтобы мой метод был синхронным.
В ответе на мой предыдущий вопрос также говорится:
Поскольку вы блокируете асинхронный метод (чего делать не следует), есть вероятность, что вы зайдете в тупик.
Итак, как мне получить доступ к этим async
методам таким образом, чтобы они обрабатывались по очереди и возвращали синхронный результат, но не вызывали взаимоблокировок?