////////////////////////////////////////////////////////////////////////// // When Done ////////////////////////////////////////////////////////////////////////// internal void sendWhenDone(Actor a, Future f) { // if already done, then set immediate flag // otherwise add to our when done list bool immediate = false; lock (this) { if (isDone()) { immediate = true; } else { if (whenDone == null) { whenDone = new ArrayList(); } whenDone.Add(new WhenDone(a, f)); } } // if immediate we are already done so enqueue immediately if (immediate) { try { a._enqueue(f, false); } catch (System.Exception e) { Err.dumpStack(e); } } }
////////////////////////////////////////////////////////////////////////// // When Done ////////////////////////////////////////////////////////////////////////// internal void sendWhenDone(Actor a, Future f) { // if already done, then set immediate flag // otherwise add to our when done list bool immediate = false; lock (this) { if (isDone()) immediate = true; else { if (whenDone == null) whenDone = new ArrayList(); whenDone.Add(new WhenDone(a, f)); } } // if immediate we are already done so enqueue immediately if (immediate) { try { a._enqueue(f, false); } catch (System.Exception e) { Err.dumpStack(e); } } }