Blazor WebAssembly 需要在使用完 Lambda 表达式后手动清理内存。以下为示例代码:
public class DisposableLambda : IDisposable
{
private Action _dispose;
public DisposableLambda(Action dispose)
{
_dispose = dispose;
}
public void Dispose()
{
if (_dispose == null) return;
_dispose();
_dispose = null;
}
}
public class MyComponent : ComponentBase, IDisposable
{
private List _subscribers = new List();
protected override void OnInitialized()
{
var lambda = new DisposableLambda(() => {
// to do something...
});
_subscribers.Add(lambda);
}
public void Dispose()
{
foreach (var subscriber in _subscribers)
{
subscriber.Dispose();
}
}
}
通过上述的示例代码,可以有效避免因为编译的 Lambda 表达式导致的内存泄漏问题。