/// <summary>Runs all callbacks in the queue.</summary> public static void RunAll(){ // Grab the one at the front: Callback current=FirstToRun; // Clear the queue: FirstToRun=null; LastToRun=null; while(current!=null){ try{ // Run it now: current.OnRun(); }catch(Exception e){ Wrench.Log.Add("Callback error (Type of "+current.GetType()+"): "+e.ToString()); } // Hop to the next one: current=current.NextCallback; } }
/// <summary>Don't call this directly. Use callback.Go() instead. Adds the callback to the main queue.</summary> public static void Add(Callback callback){ if(FirstToRun==null){ FirstToRun=LastToRun=callback; return; } if(LastToRun!=null){ // Add to the end: LastToRun.NextCallback=callback; } LastToRun=callback; }