Blazor Server Singleton Observer Muster Halten Referenzen nach der Seite AktualisierungC#

Ein Treffpunkt für C#-Programmierer
Guest
 Blazor Server Singleton Observer Muster Halten Referenzen nach der Seite Aktualisierung

Post by Guest »

Ich verwende einen Singleton -Dienst in einer Blazor -Server -App, um Komponenten zu benachrichtigen, wenn sich eine Bestellung ändert. Der Dienst folgt einem Beobachtermuster, bei dem Seiten Ereignishandler registrieren, die beim Auftreten eines Updates ausgelöst werden. < /P>
public class OrderOnChangeService : IOrderOnChangeService
{
public event Action? OnOrderRowChanged;

public void NotifyOrderRowChanged(List orderIds, Guid changeId)
{
OnOrderRowChanged?.Invoke(orderIds, changeId);
}

public int GetObserverCount()
{
return OnOrderRowChanged?.GetInvocationList().Length ?? 0;
}
}
< /code>
In meiner Blazor -Komponente (.Razor.cs) registriere ich eine Methode mit diesem Dienst: < /p>
protected override async Task OnInitializedAsync()
{
OrderOnChangeService.OnOrderRowChanged += HandleRowChanged;
Console.WriteLine($"Registered: {OrderOnChangeService.GetObserverCount()} observers");
}

public void Dispose()
{
OrderOnChangeService.OnOrderRowChanged -= HandleRowChanged;
Console.WriteLine($"Disposed: {OrderOnChangeService.GetObserverCount()} observers");
}

private void HandleRowChanged(List orderIds, Guid changeId)
{
// Handle updates
}
< /code>
Wenn ich die Seite aktualisiere, wird die Blazor -Schaltung beendet, aber da Orderonchangesservice ein Singleton ist, hält sie immer noch Verweise auf Handler aus der entsorgten Seiteninstanz. Dies scheint ein Speicherleck zu verursachen, da die Ereignisreferenzen niemals entfernt werden, es sei denn Damit der Singleton -Dienst keine abgestandenen Referenzen hält?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post