Свойство IsFaulted
Task.IsFaulted равен true
после
FromException.
Подробности - в
Exception.
await бросает внутреннее
исключение без обёртки.
Синтаксис
bool failed = task.IsFaulted;
Пример
Давайте проверим сбойную задачу:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromException(
new InvalidOperationException("abcde"));
await Task.Yield();
bool res = task.IsFaulted;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте сравнить с успешной:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var ok = Task.FromResult(12345);
await ok;
bool res = ok.IsFaulted;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Пример
Давайте убедиться, что при сбое
IsCompletedSuccessfully
ложно:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromException(
new InvalidOperationException("abcde"));
await Task.Yield();
bool res = task.IsFaulted && !task.IsCompletedSuccessfully;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
свойство
Exception,
сохранённыйAggregateException -
метод
FromException,
создать сбойную задачу -
свойство
IsCanceled,
отмена вместо сбоя -
Task,
класс, где объявлено свойство