Kann ich StreamReader.ReadLineAsync mit einem CancellationToken stornieren?

Wenn ich meine asynchrone Methode mit dem folgenden Inhalt abbrich, rufe das @ aCancel() Methode meinesCancellationTokenSource, es wird irgendwann aufhören. Da jedoch die ZeileConsole.WriteLine(await reader.ReadLineAsync()); dauert ziemlich lange, ich habe versucht, mein CancellationToken an @ weiterzuleitReadLineAsync() auch (es wird erwartet, dass es eine leere Zeichenfolge zurückgibt), um die Methode reaktionsschneller auf mein @ zu machCancel() Anruf. Allerdings konnte ich kein @ übergebCancellationToken zuReadLineAsync().

Kann ich einen Anruf bei @ abbrecheConsole.WriteLine() oderStreamreader.ReadLineAsync() und wenn ja, wie mache ich das?

Warum istReadLineAsync() akzeptiert keinCancellationToken? Ich dachte, es wäre eine gute Übung, Async-Methoden ein optionales @ zu gebeCancellationToken -Parameter, auch wenn die Methode nach dem Abbrechen noch abgeschlossen ist.

StreamReader reader = new StreamReader(dataStream);
while (!reader.EndOfStream)
{
    if (ct.IsCancellationRequested){
        ct.ThrowIfCancellationRequested();
        break;
    }
    else
    {
        Console.WriteLine(await reader.ReadLineAsync());
    }
}

Aktualisiere Wie in den Kommentaren unten angegeben, wird dasConsole.WriteLine()llein @ call dauerte aufgrund einer schlecht formatierten Eingabe von 40.000 Zeichen pro Zeile bereits einige Sekunden. Eine Unterteilung löst meine Probleme mit der Antwortzeit, aber ich bin immer noch an Vorschlägen oder Problemumgehungen interessiert, wie diese lang laufende Anweisung storniert werden kann, wenn aus irgendeinem Grund beabsichtigt war, 40.000 Zeichen in eine Zeile zu schreiben (z. B. beim Speichern der gesamten Zeichenfolge in eine Datei)

Antworten auf die Frage(8)

Ihre Antwort auf die Frage