protected void DoInternal() { currentThread = this; var enumerator = Do(); if (enumerator == null) { return; } do { var task = (TaskBase)enumerator.Current; if (task != null) { DispatchAndWait(task); } }while (enumerator.MoveNext()); }