@Anton_habr_2020

Blazor как лучше организовать работу с async/await?

Не так давно начал проект на blazor. В целом положительные впечатления, но столкнулся с принципиальным вопросом, который может сильно осложнить ситуацию. Может кто уже проходил это и подскажет удобный вариант решения.

Сама организация проекта подталкивает меня использовать async/await в коде. При работе с JS кодом вообще нет альтернатив этому (InvokeAsync). Поэтому весь код начиная от onClick и до DisposeAsync асинхронный. При этом опытным путем выяснил, что async OnClick для кнопки, к примеру, выполняется без ожидания.

Таким образом, прихожу к пониманию, что вместо ожидаемого условного однопоточного программирования интерфейса, я получаю многопоточное программирование, что тянет за собой все прелести типа симафоров и т.п.
Использовать Lock при этом практически невозможно (нельзя await внутри него).

Итого, я столкнулся с ситуацией, когда я либо нахожу решение, которое позволить синхронно выполнять код, связанный с интерфейсом и продолжить писать код в сложившемся уже для меня стиле, либо переписывать имеющийся код и писать новый в условиях многопоточности.

Прошу помощи, если вы уже сталкивались с этим. Какой пути выбрали? Какие решения применили?
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы