Ни File.GetFileAttributes, ни сам WinAPI-метод из Kernell32.dll, как и многие его друзья, не предоставляют асинхронных версий, будь то async Task в .NET или Apc-очереди в WinAPI.
Однако, вызовы могут блокироваться. Особенно если речь идёт о получении данных по сети. В связи с этим вопрос — как правильно обернуть их в awaitable Task?
Может быть, я отстал от жизни и сейчас для всех методов по работе с файловой системой разработан асинхронный API?
Другой вопрос — если без блокирующих вызовов не обойтись — как их правильно отменять?
Есть функции CancelSynchronousIo и CancelIoEx, которые работают с нативными потоками? Но валидно ли их использовать для отмены задач в .NET?