任務執行並忘記擴充套件
在某些情況下(例如日誌記錄),執行任務可能很有用,而不是等待結果。以下擴充套件允許執行任務並繼續執行其餘程式碼:
public static class TaskExtensions
{
public static async void RunAndForget(
this Task task, Action<Exception> onException = null)
{
try
{
await task;
}
catch (Exception ex)
{
onException?.Invoke(ex);
}
}
}
僅在擴充套件方法內等待結果。由於使用了 async
/ await
,因此可以捕獲異常並呼叫可選方法來處理它。
如何使用擴充套件程式的示例:
var task = Task.FromResult(0); // Or any other task from e.g. external lib.
task.RunAndForget(
e =>
{
// Something went wrong, handle it.
});