private void DestroyTarget(TargetDestroyedResponse e) { if (!_targets.ContainsKey(e.TargetId)) { throw new InvalidTargetException("Target should exists before DestroyTarget"); } var target = _targets[e.TargetId]; if (!target.InitilizedTaskWrapper.Task.IsCompleted) { target.InitilizedTaskWrapper.SetResult(false); } _targets.Remove(e.TargetId); TargetDestroyed?.Invoke(this, new TargetChangedArgs() { Target = target }); }
private async Task DestroyTargetAsync(TargetDestroyedResponse e) { if (!TargetsMap.ContainsKey(e.TargetId)) { throw new InvalidTargetException("Target should exists before DestroyTarget"); } var target = TargetsMap[e.TargetId]; TargetsMap.Remove(e.TargetId); target.CloseTaskWrapper.TrySetResult(true); if (await target.InitializedTask.ConfigureAwait(false)) { TargetDestroyed?.Invoke(this, new TargetChangedArgs { Target = target }); } }
private async Task DestroyTargetAsync(TargetDestroyedResponse e) { if (!_targets.ContainsKey(e.TargetId)) { throw new InvalidTargetException("Target should exists before DestroyTarget"); } var target = _targets[e.TargetId]; _targets.Remove(e.TargetId); if (!target.CloseTaskWrapper.Task.IsCompleted) { target.CloseTaskWrapper.SetResult(true); } if (await target.InitializedTask) { TargetDestroyed?.Invoke(this, new TargetChangedArgs { Target = target }); } }