Когда страницы "убиты" - PullRequest
1 голос
/ 18 марта 2020

Я новичок в Blazor и наткнулся на что-то странное. Если я выполню бесконечное время, пока l oop в переопределении OnInitializedAsyn c, он будет продолжать работать после перехода на другую страницу.

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

Как это возможно? И каков будет рекомендуемый подход для выполнения непрерывных запросов API (для обновления данных), если пользователь не переключил страницу? Или какое-то непрерывное задание на этот счет.

Спасибо! -Victor

1 Ответ

4 голосов
/ 18 марта 2020

Вы должны сделать свои Компоненты одноразовыми и отменить все выполняющиеся Задачи / отписаться от любых событий и т. Д. c. в методе Dispose.

Когда Blazor рендерит страницу, он создаст новый экземпляр вашего Компонента, и когда вы удалите Компонент со «страницы» (это включает в себя переход к другому Компоненту / странице), если Компонент реализует IDisposable, тогда будет вызван Dispose.

Как вы реализуете долгосрочную задачу, зависит только от вас - обычно это будет go в Сервис, а не в Компонент пользовательского интерфейса.

...