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");
}
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?
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"); }
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?
Ich entwickle ein System zur Überwachung von Geldtransfers. Markaz ).
In Zukunft werden immer mehr Kriterien hinzugefügt, und für jedes neue Kriterium wird
ein neuer Beobachter erstellt, um seine...
Ich teste diesen Blazor-Server auf unserem vorhandenen ASP.NET Core MVC-Projekt mit der neuesten Version von .NET 8.
Beim Ausführen tritt immer dieser Fehler auf:
Die Anfrage stimmte mit mehreren...
Meine Aufgabe ist es, eine Verbindung mit JDBC mit dem Singleton -Muster zu erhalten. Ich wollte fragen, ob ich das Muster benutze oder nicht?
public class DbUtils {
private static Connection conn...
Mein Selenium -Java -Code druckt die Feldwerte aus einem Dashboard, das zunächst angezeigt wird, sobald die Seite geladen wird. Die Seite wird jedoch in wenigen Sekunden automatisch aktualisiert und...
Ich habe viele Dinge der folgenden Art: a+2da + 2d
Der erste Teil Der Inhalt des Spans ist Teil eines mathematischen Ausdrucks a+2d (ohne Leerzeichen) und der zweite Teil enthält denselben Text,...