Laden...

C# Konsolenanwendung im Browser

Erstellt von Newbie123 vor 11 Monaten Letzter Beitrag vor 11 Monaten 659 Views
N
Newbie123 Themenstarter:in
3 Beiträge seit 2023
vor 11 Monaten
C# Konsolenanwendung im Browser

Hallo, ich möchte eine Konsolenanwendung schreiben die im Browser läuft. Hab gehört das das mit WebAssembly funktionieren soll. Hier mein Versuch an einer ganz simplen Anwendung. Soll im 1 Sekunden Takt einen neuen Buchstaben des Alphabets ausgeben. Leider funktioniert das nicht und das Programm hängt für ein paar Sekunden und gibt dann alle Buchstaben aus (A steht von Anfang an da).

Index.razor

@page "/"

<PageTitle>Index</PageTitle>

<button @onclick="Run">Start</button>
<h1>@_text</h1>

@code {
    public string _text = "A";

    public void AppendText(string text)
    {
        _text += text;
    }

    public async Task Run()
    {
        await Task.Delay(1000);
        AppendText(" B");
        await Task.Delay(1000);
        AppendText(" C");
        await Task.Delay(1000);
        AppendText(" D");
    }
}

Was mache ich falsch oder ist mein Vorhaben so gar nicht möglich?

N
Newbie123 Themenstarter:in
3 Beiträge seit 2023
vor 11 Monaten

Lässt sich starten, aber leider ohne Änderung. Funktion ist die gleiche.

4.938 Beiträge seit 2008
vor 11 Monaten

Dann hat das wohl mit dem Aktualisieren des angezeigten Textes _text zu tun. Dies wird wohl standardmäßig erst nach Aufruf der gesamten onclick-Methode aktualisiert. Ich weiß aber leider nicht, wie man dies selber aktualisieren kann.

126 Beiträge seit 2023
vor 11 Monaten

Probier mal diese kleine Änderung am Code:

public void AppendText(string text)
{
    _text += text;
    this.StateHasChanged();
}

Hat die Blume einen Knick, war der Schmetterling zu dick.

N
Newbie123 Themenstarter:in
3 Beiträge seit 2023
vor 11 Monaten
StateHasChanged();

Funktioniert. Besten Dank!