我阅读了一些有关 Blazor 组件生命周期的内容,并注意到 IDisposible 可用于释放内存。据我对 IDisposable 的 Dispose 方法的理解,除非手动调用或由垃圾收集器调用,否则不能保证调用它。
鉴于 Blazor 组件已实现 IDispose,一旦从 UI 中删除该组件,是否会立即强制调用 Dispose 方法?
mez*_*tou 10
Blazor 调用Dispose或DisposeAsync如果您实施IDisposable或IAsyncDisposable
如果组件实现
IDisposable、IAsyncDisposable或两者,则当从 UI 中删除该组件时,框架会调用非托管资源处置。处置可以随时发生,包括在组件初始化期间。
IDisposible 可用于释放内存
这不是正确的看待问题的方式。Dispose() 用于释放资源,而不是内存。
仅当您的组件包含(托管或非托管)资源时,您才需要它。例如计时器或 DbContext。
一旦组件从 UI 中移除,Dispose 方法是否会被强制调用?
是的。通常我会将其用于页面,但它也适用于被删除的组件,例如@if(...) { ... }