Laden...

Forenbeiträge von Ehm Ingesamt 5 Beiträge

11.08.2021 - 18:01 Uhr

Habe einen IHostedService angelegt und das darauf ausgelagert.
Weiss acuh nicht was ich mir bei der implementierung in die Main Methode gedacht habe.

Allerdings scheint es jetzt trotzdem an den Singletons zu scheitern.
So habe ich diese Registriert:


public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();
            services.AddDatabaseDeveloperPageExceptionFilter();
            services.AddSingleton<SettingsObject>();
            services.AddSingleton<ComponentService>();
            services.AddSingleton<TimedBackgroundService>();
            services.AddHostedService<ProblematischerService>();
        }

Ich benutze die Constructor injection und starte so einen Timer. Eigentlich sollte der Timer dann auch, wegen des Singleton lifecycles, für andere Services/Razorpages verfügbar sein. Wenn ich aber versuche besagten Timer zu stoppen bekomme ich Exceptions da die erforderlichen Singletons null oder nicht befüllt sind. Es scheint so als ob eine weitere Instanz angelegt worden ist.


public class ProblematischerService: IHostedService
    {
        private SettingsObject settings;
        private TimedBackgroundService backgroundService;
        private readonly ComponentService componentService;

        public AutomaticStartService(ComponentService _componentService, TimedBackgroundService _backgroundService, SettingsObject _settings)
        {
            componentService = _componentService;
            settings = componentService.GetSettings();
            backgroundService = new(componentService, settings);
        }

        public Task StartAsync(CancellationToken cancellationToken)
        {
            if (settings.AutomaticStart)
            {
                return backgroundService.StartTimer(new CancellationToken());
            }
            return Task.CompletedTask;
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            return Task.CompletedTask;
        }
    }

10.08.2021 - 16:56 Uhr

Ich habe ein ASP.NET Blazor Projekt.
Dort sind Services als Singletons registriert.

Nun muss direkt nach dem Startup eine Methode aufgerufen werden welche einen Prozess in gang setzt.
Ich habe versucht diese Funktionalität direkt in der Main Methode zu implementieren, allerdings sind zu diesem Zeitpunkt die Singletons noch nicht ordentlich in Kraft getreten.

Habt ihr eine Idee wie ich das umsetzen könnte?

28.04.2021 - 21:18 Uhr

Hallo zusammen,

ich habe eine Blazor Server App .NET 5.0.
Diese soll nun im IIS gehostet werden und in einem bestimmten Intervall Backgroundcode ausführen.

Die Frage ist nun, ob dieser auch ausgeführt werden kann wenn die App nicht im Browser geöffnet ist bzw. weiterläuft wenn das Browserfenster geschlossen wird.
Online finde ich diesbezüglich wenig Infos.


var timer = new System.Threading.Timer((e) =>
            {
                //Do stuff
            }, null, startTimeSpan, periodTimeSpan);

Oben der Timercode den ich benutze um den Backgroundthread ins Rollen zu bringen.

Vielen Dank schonmal im voraus

22.04.2021 - 10:02 Uhr

Die Lösung mit der lokalen Variable hat funktioniert!
Danke dir Unfug 🙂

21.04.2021 - 16:26 Uhr

Hallo zusammen,

ich schreibe gerade eine Blazor Server App.

Razor Page


<table class="table">
        <thead>
            <tr>
                <th>Applications</th>
                <th>Under Surveillance</th>
            </tr>
        </thead>
        <tbody>
            @for (int i = 0; i < applications.Count - 1; i++)
            {
                <tr>
                    <td>@applications[i].Name</td>
                    <td>
                        <input type="checkbox" @bind="applications[i].UnderSurveillance" />
                        Überwacht
                    </td>
                </tr>
            }
        </tbody>
    </table>

C# Object


public class ApplicationObject
    {
        public string Name { get; set; }
        public bool UnderSurveillance { get; set; }
    }

Ich übergebe der Tabelle eine Liste von den obigen ApplicationObjects und versuche die UnderSurveillance Attribute mit einem Checkbox Binding zu ändern um diese dann weiter verarbeiten zu können.

Das Problem besteht darin das das Binding den Wert nicht ändert, bzw. dieser nicht geändert bleibt (nach einem Sekundenbruchteil wechselt es wieder zum Ursprungswert).
Habt ihr vielleicht eine Idee?

Vielen Dank schonmal im voraus

Gruß