private void Complete()
 {
     OnComplete.SafeInvoke();
     OnComplete = null;
 }