public void Cleanup() { if (OnDone == null) { return; } foreach (Delegate action in OnDone.GetInvocationList()) { Action handler = action as Action; if (handler == null) { continue; } OnDone -= handler; } }
public void OnFinished(Action actionToTake) { if (OnDone != null) { foreach (Delegate action in OnDone.GetInvocationList()) { Action handler = action as Action; if (handler == null) { continue; } if (handler == actionToTake) { return; } } } OnDone += actionToTake; }
public void RemoveOnFinishedAction(Action actionToRemove) { if (OnDone == null) { return; } foreach (Delegate action in OnDone.GetInvocationList()) { Action handler = action as Action; if (handler == null) { continue; } if (handler != actionToRemove) { continue; } OnDone -= actionToRemove; return; } }