首页 > 解决方案 > 页面何时“被杀死”

问题描述

我是 blazor 的新手,偶然发现了一些奇怪的东西。如果我在 OnInitializedAsync 覆盖中执行无限循环,它将在导航到另一个页面后继续运行。

此外,如果我来回导航,它将运行多个这些无限的 while 循环。好像它在每次导航到页面时都会创建一个新实例,但在离开页面时不会清理该实例。

这怎么可能?只要用户没有切换页面,推荐的连续 api 请求(用于更新数据)的方法是什么?或者任何类型的持续任务。

谢谢!-胜利者

标签: blazorblazor-client-side

解决方案


您应该在 Dispose 方法中使您的组件一次性并取消任何正在运行的任务/取消订阅任何事件等。

当 Blazor 呈现页面时,它将创建您的组件的新实例,并且当您从“页面”中删除一个组件时(这包括导航到另一个组件/页面),如果该组件实现 IDisposable 则将调用 Dispose。

你如何实现一个长时间运行的任务取决于你——通常它会进入一个服务而不是一个 UI 组件。


推荐阅读