Я использую событие для передачи данных из одного частичного представления в другое в Blazor.
Проблема: удаление не работает, и каждый раз, когда страница уничтожается и перерисовывается, она присоединяет одно и то же событие. И когда я вызываю событие, оно вызывается несколько раз (это количество раз, когда частичное представление уничтожается и воссоздается)
Код определения события с методом вызова
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)
{}
Я регистрирую событие в функции OnInitializedAsyn c следующим образом.
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);
}