diff --git a/Assets/UniRx.Async/UnityAsyncExtensions.cs b/Assets/UniRx.Async/UnityAsyncExtensions.cs index fdb6cd3..68aca43 100644 --- a/Assets/UniRx.Async/UnityAsyncExtensions.cs +++ b/Assets/UniRx.Async/UnityAsyncExtensions.cs @@ -792,14 +792,18 @@ namespace UniRx.Async public void UnsafeOnCompleted(Action continuation) { - if(asyncOperation != null && asyncOperation.isDone) - { - continuation?.Invoke(); - return; - } + Error.ThrowWhenContinuationIsAlreadyRegistered(continuationAction); continuationAction = continuation.AsFuncOfT(); - asyncOperation.completed += continuationAction; + lock (asyncOperation) + { + if (asyncOperation.isDone) + { + continuation?.Invoke(); + return; + } + asyncOperation.completed += continuationAction; + } } }