Ваш метод не возвращается до тех пор, пока вызов Exists не будет полностью завершен, поэтому он всегда будет блокировать пользовательский интерфейс.По сути, вы начали асинхронную операцию, но затем бездельничайте, ожидая ее завершения.
Как отметил Дмитрий Быченко, вы можете сделать это в другом потоке и обрабатывать его очень аккуратно, используя async
await
и Task.Run
.Для этого вы также должны сделать обработчик событий, который вызывает этот метод async
, например:
// An async event handler
public async void Button_Click(...)
{
...
var exists = await DirectoryExists(myPath);
...
}
public async Task<bool> DirectoryExists(string path)
{
return await Task.Run<bool>(() => Directory.Exists(path));
}