在类库中公开 API 的同步和异步版本是否有推荐的最佳实践/指南?例如,如果我在类库中定义了以下 2 个方法:
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/Console/ASP.NET 客户端应用程序中。考虑到任务被配置为不捕获任何同步上下文以避免潜在的死锁,客户端使用上面使用 task.Result 的同步版本是否安全