using System.Threading.Tasks;
public static void Main()
Console.WriteLine($"task status is {t.Status}, IsCompleted: {t.IsCompleted}, IsCompletedSuccessfully: {t.IsCompletedSuccessfully}");
if (t.IsCompletedSuccessfully){
Console.WriteLine("task is ok!..");
if (t.Exception != null){
Console.WriteLine("Task is faulted: {0}", t.Exception.Message);
return new CallResult(false);
Task.WaitAll(new []{task});
var result = task.Result;
Console.WriteLine(result);
public static async Task<CallResult> RunTask() {
Console.WriteLine("task is running!..");
throw new Exception("force to error");
return new CallResult(true);
public class CallResult {
public CallResult(bool isSuccess) {
public bool IsSuccess {get; set;}
public override string ToString(){
return $"CallResult is {IsSuccess}";