我在 Blazor 中使用事件将数据从一个局部视图传递到另一个局部视图。
问题:dispose 不起作用,每次页面销毁并重新呈现时,它都会附加相同的事件。当我调用事件时,它会调用多次(部分视图销毁和重新创建的时间)
带有调用方法的事件定义代码
public event Action<long,long,bool,bool> MyEvent;
public void InVokeMyEvent(long data1,
bool data2,long data3,bool data4) {
MyEvent?.Invoke(data1,data2,data3, data4);
}
函数定义
async Task MyFunction(long data1,
long data2,
bool data3,
bool data4)
{}
我在 OnInitializedAsync 函数中注册事件如下。
protected override async Task OnInitializedAsync()
{
RGEState.MyEvent+= async (long data1,
long data2,
bool data3,
bool data4) =>
await MyFunction(data1,
data2,
data3,
data4);
await base.OnInitializedAsync();
}
现在要分离事件,我在实现 IDisposable 后在页面中执行以下代码。
public void Dispose()
{
RGEState.MyEvent -= async (long data1,
long data2,
bool data3,
bool data4) =>
await MyFunction(data1,
data2,
data3,
data4);
}