blazor - 页面何时“被杀死”
问题描述
我是 blazor 的新手,偶然发现了一些奇怪的东西。如果我在 OnInitializedAsync 覆盖中执行无限循环,它将在导航到另一个页面后继续运行。
此外,如果我来回导航,它将运行多个这些无限的 while 循环。好像它在每次导航到页面时都会创建一个新实例,但在离开页面时不会清理该实例。
这怎么可能?只要用户没有切换页面,推荐的连续 api 请求(用于更新数据)的方法是什么?或者任何类型的持续任务。
谢谢!-胜利者
解决方案
您应该在 Dispose 方法中使您的组件一次性并取消任何正在运行的任务/取消订阅任何事件等。
当 Blazor 呈现页面时,它将创建您的组件的新实例,并且当您从“页面”中删除一个组件时(这包括导航到另一个组件/页面),如果该组件实现 IDisposable 则将调用 Dispose。
你如何实现一个长时间运行的任务取决于你——通常它会进入一个服务而不是一个 UI 组件。
推荐阅读
- javascript - 在 AmCharts 中添加过滤/下拉菜单
- spring-boot - 无法在 springboot application.properties 中填充系统环境值
- html - HTML标签内的div?(引导程序 4)
- python - 无法选择下拉菜单:Kendo UI + AngularJS、Selenium、Python
- java - 是否可以在自定义组件中使用骆驼组件?
- javascript - 我可以简化这些 JavaScript 三元运算符吗?`变量A?variableB : false` 到 `variableA && variableB`
- c# - 作为 ComboBox 源的字典以 InvalidCastException 结尾
- google-cloud-platform - 可以将现有 GKE 集群设为私有吗?
- google-bigquery - BigQuery BI 引擎是否支持左连接?
- java - 使用比较器时相同类型的不兼容类型错误