public static void CookDinner(IExecutive exec, object userData) { Console.WriteLine(" {0} : Starting to cook dinner...", exec.Now); long code1 = exec.RequestEvent(MakeTurkey, exec.Now, 0.0, null, ExecEventType.Detachable); long code2 = exec.RequestEvent(MakeGravy, exec.Now, 0.0, null, ExecEventType.Detachable); long code3 = exec.RequestEvent(MakeStuffing, exec.Now, 0.0, null, ExecEventType.Detachable); Console.WriteLine(" {0} : We'll wait 'til everything is done before we serve dinner!", exec.Now); exec.Join(code1, code2, code3); Console.WriteLine(" {0} : Serving dinner!", exec.Now); }
private void JoinDetachableSetup(IExecutive exec, object userData) { DateTime[] whens = new DateTime[3]; whens[0] = new DateTime(2008, 11, 25, 12, 15, 44); whens[1] = new DateTime(2008, 11, 26, 12, 15, 44); whens[2] = new DateTime(2008, 11, 27, 12, 15, 44); List <long> eventKeys = new List <long>(); ExecEventType eet = ExecEventType.Synchronous; for (int i = 0; i < 3; i++) { if (eet == ExecEventType.Synchronous) { eventKeys.Add(exec.RequestEvent(new ExecEventReceiver(DoItWithoutSuspension), whens[i], 0.0, null, eet)); } else if (eet == ExecEventType.Detachable) { eventKeys.Add(exec.RequestEvent(new ExecEventReceiver(DoItWithSuspension), whens[i], 0.0, null, eet)); } } Console.WriteLine(exec.Now + " : Waiting to join."); exec.Join(eventKeys.ToArray()); Console.WriteLine(exec.Now + " : Done waiting to join."); }