【问题标题】:When are pages "killed"页面何时“被杀死”
【发布时间】:2020-03-17 23:01:38
【问题描述】:

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

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

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

谢谢! -维克多

【问题讨论】:

    标签: blazor blazor-client-side


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 2011-03-24
      • 2015-12-07
      • 2011-09-09
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2019-11-17
      相关资源
      最近更新 更多