Есть ли рекомендуемая рекомендация/руководство по экспорту синхронных и асинхронных версий API в библиотеке классов? Например, если у меня есть следующие 2 методы, определенные в библиотеке классов:Предоставление синхронных и асинхронных версий API в библиотечном коде
public Task<string> GetSomeDataAsync()
{
//typically an IO operation that would be awaited on, simplified to return a Task for illustration
return Task<string>.Factory.StartNew(() => "foo");
}
public string GetSomeDataSync()
{
var task = GetSomeDataAsync();
task.ConfigureAwait(continueOnCapturedContext: false);
return task.Result;
}
выше может быть размещен в клиентском приложении Winform/WPF/консоли/ASP.NET. Безопасно ли для клиента использовать синхронную версию, выше которой используется task.Result, учитывая, что задача сконфигурирована так, чтобы не фиксировать какой-либо контекст синхронизации, чтобы избежать возможных взаимоблокировок.
Я не думаю, что это на самом деле отвечает на вопрос, вы не обращаетесь к двум методам. – svick
Хорошо, я добавлю немного больше. – Haney