Update docs

This commit is contained in:
Soreepeong 2024-08-25 22:23:58 +09:00
parent 6db7acca20
commit 27ef053252

View file

@ -63,20 +63,34 @@ public static class TaskExtensions
#pragma warning restore RS0030 #pragma warning restore RS0030
} }
/// <summary>Ignores any exceptions thrown from the task.</summary> /// <summary>Creates a new <see cref="Task"/> that resolves when <paramref name="task"/> completes, ignoring
/// <param name="task">Task to ignore exceptions.</param> /// exceptions thrown from the task, if any.</summary>
/// <returns>A task that completes when <paramref name="task"/> completes in any state.</returns> /// <param name="task">Task to await and ignore exceptions on failure.</param>
public static async Task SuppressException(this Task task) /// <returns>A <see cref="Task"/> that completes successfully when <paramref name="task"/> completes in any state.
{ /// </returns>
try /// <remarks>Awaiting the returned <see cref="Task"/> will always complete without exceptions, but awaiting
{ /// <paramref name="task"/> will throw exceptions if it fails, even after this function is called.</remarks>
await task; /// <example>
} /// <para>
catch /// <b>Wrong use of this function</b>
{ /// <code>
// ignore /// var task = TaskThrowingException();
} /// task.SuppressException();
} /// await TaskThrowingException(); // This line will throw.
/// </code>
/// </para>
/// <para>
/// <b>Correct use of this function, if waiting for the task</b>
/// <code>await TaskThrowingException().SuppressException();</code>
/// </para>
/// <para>
/// <b>Fire-and-forget</b><br />
/// If not interested in the execution state of Task (fire-and-forget), simply calling this function will do.
/// This function consumes the task's exception, so that it won't bubble up on later garbage collection.
/// <code>TaskThrowingException().SuppressException();</code>
/// </para>
/// </example>
public static Task SuppressException(this Task task) => task.ContinueWith(static r => r.Exception);
private static bool IsWaitingValid(Task task) private static bool IsWaitingValid(Task task)
{ {