I am using event to pass data from one partial view to another in Blazor.
Problem: the dispose is not working and every time when page destroyed and re rendered it attaches the same event. And when ever I invoke event it invokes multiple time(that number of time when partial view destroyed and recreated)
Event definition code with invoke method
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);
}
The function definition
async Task MyFunction(long data1,
long data2,
bool data3,
bool data4)
{}
I am registering the event in OnInitializedAsync function as following.
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();
}
Now to detach event I am doing following code in page after implementing IDisposable.
public void Dispose()
{
RGEState.MyEvent -= async (long data1,
long data2,
bool data3,
bool data4) =>
await MyFunction(data1,
data2,
data3,
data4);
}