Код: Выделить всё
interface IFileProvider
{
Task FileExistsAsync(string filePath);
...
}
С точки зрения производительности или риска взаимоблокировок, что является меньшим злом, между простым выполнением блокирующего вызова в вызывающем потоке:
Код: Выделить всё
class FileSystemImplementation : IFileProvider
{
Task FileExistsAsync(string filePath) => Task.FromResult(File.Exists(filePath));
}
Код: Выделить всё
class FileSystemImplementation : IFileProvider
{
Task FileExistsAsync(string filePath) => Task.Run(() => File.Exists(filePath));
}
Код: Выделить всё
class FileSystemImplementation : IFileProvider
{
async Task FileExistsAsync(string filePath) => await Task.Run(() => File.Exists(filePath));
}