public TaskContinuable Then(Action <AsyncTask> task, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { if (CurrentTask != null && !CurrentTask.IsDisposed) { CurrentTask.AddAfterFinishJob(task, memberName, sourceFilePath, sourceLineNumber); CurrentTask.FlushJob(false); } else { task(CurrentTask); } return(this); }
/// <summary> /// Test Program /// </summary> /// <param name="argv"></param> public static void Test(String[] argv) { AsyncTask goodjob = new AsyncTask(new Action(() => { Console.WriteLine("Main Job"); })); goodjob.AddAfterFinishJob(new Action(() => { Console.WriteLine("Additional Job"); })); goodjob.Start(false); goodjob.FlushJob(); Console.WriteLine("Good Job-Available={0};IsFault={1}", goodjob.IsAvailable, goodjob.IsFault); AsyncTask badjob = new AsyncTask(new Action(() => { Console.WriteLine("Main Job2"); throw new Exception("No thing"); })); badjob.AddAfterFinishJob(new Action(() => { Console.WriteLine("Additional Job2"); })); badjob.Start(true); badjob.FlushJob(); Console.WriteLine("Bad Job-Available={0};IsFault={1}", goodjob.IsAvailable, goodjob.IsFault); }