void RunIterate () { if (current != null) { if (!current.RunIterate ()) { BeginInvoke (RunIterate); return; } Result.AddResult (current.Result); } while (queue.Count > 0) { current = queue.Dequeue (); current.RunAsync (listener); if (!current.RunIterate ()) { BeginInvoke (RunIterate); return; } Result.AddResult (current.Result); } RunEnd (); }