0Pricing
C# Academy · Lektion

Timeout- und Fallback-Richtlinien

Begrenzen Sie Wartezeiten und stellen Sie geeignete Fallbacks bereit.

Timeout- und Fallback-Richtlinien ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Timeouts wichtig sind

Ein Aufruf, der nie zurückkehrt, ist schlimmer als einer, der fehlschlägt: Er bindet Threads und Verbindungen. Eine Timeout-Strategie begrenzt, wie lange ein Vorgang ausgeführt werden darf, bevor Polly ihn abbricht.

Ein Timeout hinzufügen

Polly v8 stellt AddTimeout bereit. Wird das Zeitlimit überschritten, wird eine TimeoutRejectedException ausgelöst und das zugrunde liegende Token abgebrochen.

using Polly.Timeout;

var pipeline = new ResiliencePipelineBuilder()
    .AddTimeout(TimeSpan.FromSeconds(3))
    .Build();

Kooperative Abbruchbehandlung

Das Timeout funktioniert, indem das an Ihren Callback übergebene CancellationToken abgebrochen wird. Ihr Code muss dieses Token beachten, damit das Timeout zeitnah wirksam wird.

await pipeline.ExecuteAsync(async token =>
{
    // token is cancelled when the timeout fires
    await httpClient.GetAsync(url, token);
});

Auf Timeouts reagieren

Verwenden Sie TimeoutStrategyOptions mit einem OnTimeout-Callback, um zu protokollieren oder Metriken auszugeben, wenn ein Vorgang vorzeitig beendet wird.

new TimeoutStrategyOptions
{
    Timeout = TimeSpan.FromSeconds(3),
    OnTimeout = args =>
    {
        Console.WriteLine($"Timed out after {args.Timeout}");
        return default;
    }
};

Was ist ein Fallback?

Ein Fallback liefert ein Ersatzresultat, wenn ein Vorgang fehlschlägt. So erhält der Benutzer statt einer Fehlermeldung eine kontrollierte, eingeschränkte Funktionalität: zwischengespeicherte Daten, einen Standardwert oder eine verständliche Nachricht.

Eine Fallback-Strategie hinzufügen

AddFallback benötigt eine typisierte Pipeline. Sie legen fest, welche Fehler behandelt werden sollen und welcher Wert stattdessen zurückgegeben wird.

using Polly.Fallback;

var pipeline = new ResiliencePipelineBuilder<string>()
    .AddFallback(new FallbackStrategyOptions<string>
    {
        ShouldHandle = new PredicateBuilder<string>()
            .Handle<HttpRequestException>(),
        FallbackAction = args =>
            Outcome.FromResultAsValueTask("cached default")
    })
    .Build();

Zwischengespeicherte Daten als Fallback zurückgeben

Ein gängiges Muster besteht darin, bei einem Fehler des Live-Aufrufs den zuletzt bekannten gültigen Wert aus dem Cache bereitzustellen, damit die Anwendung reaktionsfähig bleibt.

FallbackAction = args =>
{
    var cached = _cache.GetLastKnownGood();
    return Outcome.FromResultAsValueTask(cached);
}

Fallbacks beobachten

Der OnFallback-Callback wird ausgelöst, wenn der Fallback ausgeführt wird. Das eignet sich besonders, um zu protokollieren, dass ein eingeschränkter Ausführungspfad verwendet wurde.

new FallbackStrategyOptions<string>
{
    FallbackAction = args => Outcome.FromResultAsValueTask("default"),
    OnFallback = args =>
    {
        Console.WriteLine("Fallback executed");
        return default;
    }
};

Timeout und Fallback gemeinsam

Die Kombination ist besonders leistungsfähig: Ein Timeout begrenzt die Wartezeit, und ein Fallback liefert einen Wert, wenn das Timeout oder ein anderer behandelter Fehler auftritt. So hängen Aufrufer niemals fest und stürzen nicht ab.

Sinnvolle Timeouts wählen

Legen Sie Timeouts anhand einer realistischen Latenz zuzüglich eines Puffers fest, nicht anhand willkürlich kleiner Werte. Ist das Timeout zu knapp bemessen, schlagen auch gesunde Aufrufe fehl. Ist es zu großzügig, verfehlt es seinen Zweck.

Fallback als letztes Mittel

Platzieren Sie den Fallback als äußerste Strategie, damit er Fehler aus Wiederholungsversuchen, Circuit Breakern und Timeouts gleichermaßen abfangen kann. So erhält der Aufrufer garantiert immer ein verwendbares Ergebnis.

Kurzer Check

Testen Sie Timeout- und Fallback-Strategien.

Zusammenfassung

Timeouts begrenzen mit AddTimeout die Dauer eines Vorgangs, brechen das Token ab und lösen TimeoutRejectedException aus. Beachten Sie das Token! Fallbacks liefern über AddFallback mit einer FallbackAction Ersatzresultate, häufig in Form zwischengespeicherter Daten. Zusammen halten sie Anwendungen reaktionsfähig: Begrenzen Sie die Wartezeit und bieten Sie anschließend eine kontrollierte eingeschränkte Funktionalität. Platzieren Sie den Fallback außen, damit er alle behandelten Fehler abfängt.

Häufig gestellte Fragen

Ist die Lektion „Timeout- und Fallback-Richtlinien“ kostenlos?

Ja — der vollständige Text von „Timeout- und Fallback-Richtlinien“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Timeout- und Fallback-Richtlinien“?

Begrenzen Sie Wartezeiten und stellen Sie geeignete Fallbacks bereit. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Timeout- und Fallback-Richtlinien“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Retry-Richtlinien
  2. Circuit-Breaker-Muster
  3. Timeout- und Fallback-Richtlinien
  4. Resilienz-Pipelines
← Zurück zu C# Academy