我是blazor的新手,偶然发现了一些奇怪的东西。如果我在OnInitializedAsync覆盖中执行一个无限while循环,它将在导航到另一个页面后继续运行。
此外,如果我来回导航,它将运行这些无限while循环中的多个。就好像它在每次导航到页面时都会创建一个新实例,但在离开页面时不会清理实例。
这怎么可能?只要用户没有切换页面,建议采用什么方法来进行连续的api请求(用于更新数据(?或者任何一种持续的任务。
谢谢!-Victor
您应该使组件成为可丢弃的,并在Dispose方法中取消任何正在运行的任务/取消订阅任何事件等。
当Blazor呈现页面时,它将创建组件的新实例,当您从"页面"中删除组件(包括导航到另一个组件/页面(时,如果组件实现IDisposable,则将调用Dispose。
如何实现一个长期运行的任务取决于您——不过,通常它会进入服务而不是UI组件。