Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, Kolesiki, Вы писали:
K>>Но вот async?... K>>Пусть это будет команда Save. Мы нажали, асинхронно вышли из метода, куда-то даже полезли нажимать другие команды, а save всё ещё работает! Хуже того — у неё могут возникнуть проблемы! K>>Ну и вот какой смысл "не ждать завершения команды", если всё равно тебе прилетит по лбу? Хуже того — ты понадеялся на УСПЕШНЫЙ сэйв, а документ уже испортил!
MA> 1) испортить документ — это логическая ошибка, безотносительно реализации. Это значит, что надеяться на успешный сэйв очевидно, нельзя. Но это не значит, что он не может быть асинхронным.
Он может быть каким угодно, я спросил про асинк — каким боком он мне поможет, если я не знаю результата операции??
И напоминаю, сэйвы в отдельном потоке никто не отменял.
MA> 2) подвиснуть на 30 секунд сохраняя документ не отрисовывая окно — не очень дружественно к пользователю. Это надо решать.
Никто не говорил про "не отрисовывая". Забудьте про этот атавизм! Давно придуманы потоки, корутины, таски и т.п.
MA> 4) async/await лишь помогает/позволяет записать некоторые взаимодействия в их более-менее естественной форме, без зубодробильного ручного маршаллинга вызовов по потокам
В теории — да. Но как я показал, от того, что кнопка сразу "отжалась", легче никому не стало — ты всё равно обязан либо иметь механизм ожидания долгой операции, либо тупо подождать её завершения, ибо от неё зависит последущая работа (это не только про сэйв).