diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/CancellationTokenExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/CancellationTokenExtensions.cs index 3f3a532..3da47c1 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/CancellationTokenExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/CancellationTokenExtensions.cs @@ -67,13 +67,13 @@ namespace Cysharp.Threading.Tasks return (UniTask.FromCanceled(cancellationToken), default(CancellationTokenRegistration)); } - var promise = new UniTaskCompletionSource(); + var promise = AutoResetUniTaskCompletionSource.Create(); return (promise.Task, cancellationToken.RegisterWithoutCaptureExecutionContext(cancellationTokenCallback, promise)); } static void Callback(object state) { - var promise = (UniTaskCompletionSource)state; + var promise = (AutoResetUniTaskCompletionSource)state; promise.TrySetResult(); } diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/Channel.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/Channel.cs index 5a484fd..196ebdd 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/Channel.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/Channel.cs @@ -91,7 +91,7 @@ namespace Cysharp.Threading.Tasks { readonly Queue items; readonly SingleConsumerUnboundedChannelReader readerSource; - UniTaskCompletionSource completedTaskSource; + AutoResetUniTaskCompletionSource completedTaskSource; UniTask completedTask; Exception completionError; @@ -208,7 +208,7 @@ namespace Cysharp.Threading.Tasks return parent.completedTask; } - parent.completedTaskSource = new UniTaskCompletionSource(); + parent.completedTaskSource = AutoResetUniTaskCompletionSource.Create(); return parent.completedTaskSource.Task; } } diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Never.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Never.cs index 2dbce71..ca3925b 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Never.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Never.cs @@ -36,11 +36,11 @@ namespace Cysharp.Threading.Tasks.Linq public UniTask MoveNextAsync() { - var tcs = new UniTaskCompletionSource(); + var tcs = AutoResetUniTaskCompletionSource.Create(); cancellationToken.Register(state => { - var task = (UniTaskCompletionSource)state; + var task = (AutoResetUniTaskCompletionSource)state; task.TrySetCanceled(cancellationToken); }, tcs); diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/Triggers/AsyncTriggerExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/Triggers/AsyncTriggerExtensions.cs index bad5a04..2411b36 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/Triggers/AsyncTriggerExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/Triggers/AsyncTriggerExtensions.cs @@ -18,13 +18,13 @@ namespace Cysharp.Threading.Tasks #endif - /// This CancellationToken is canceled when the MonoBehaviour will be destroyed. + /// This CancellationToken is canceled when the GameObject will be destroyed. public static CancellationToken GetCancellationTokenOnDestroy(this GameObject gameObject) { return gameObject.GetAsyncDestroyTrigger().CancellationToken; } - /// This CancellationToken is canceled when the MonoBehaviour will be destroyed. + /// This CancellationToken is canceled when the Component will be destroyed. public static CancellationToken GetCancellationTokenOnDestroy(this Component component) { #if UNITY_2022_2_OR_NEWER diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskExtensions.cs index 5155567..7ab8543 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskExtensions.cs @@ -16,11 +16,11 @@ namespace Cysharp.Threading.Tasks /// public static UniTask AsUniTask(this Task task, bool useCurrentSynchronizationContext = true) { - var promise = new UniTaskCompletionSource(); + var promise = AutoResetUniTaskCompletionSource.Create(); task.ContinueWith((x, state) => { - var p = (UniTaskCompletionSource)state; + var p = (AutoResetUniTaskCompletionSource)state; switch (x.Status) { @@ -46,11 +46,11 @@ namespace Cysharp.Threading.Tasks /// public static UniTask AsUniTask(this Task task, bool useCurrentSynchronizationContext = true) { - var promise = new UniTaskCompletionSource(); + var promise = AutoResetUniTaskCompletionSource.Create(); task.ContinueWith((x, state) => { - var p = (UniTaskCompletionSource)state; + var p = (AutoResetUniTaskCompletionSource)state; switch (x.Status) { diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs index d2bd961..bea0621 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTaskObservableExtensions.cs @@ -11,7 +11,7 @@ namespace Cysharp.Threading.Tasks { public static UniTask ToUniTask(this IObservable source, bool useFirstValue = false, CancellationToken cancellationToken = default) { - var promise = new UniTaskCompletionSource(); + var promise = AutoResetUniTaskCompletionSource.Create(); var disposable = new SingleAssignmentDisposable(); var observer = useFirstValue @@ -109,7 +109,7 @@ namespace Cysharp.Threading.Tasks { static readonly Action callback = OnCanceled; - readonly UniTaskCompletionSource promise; + readonly IPromise promise; readonly SingleAssignmentDisposable disposable; readonly CancellationToken cancellationToken; readonly CancellationTokenRegistration registration; @@ -117,7 +117,7 @@ namespace Cysharp.Threading.Tasks bool hasValue; T latestValue; - public ToUniTaskObserver(UniTaskCompletionSource promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken) + public ToUniTaskObserver(IPromise promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken) { this.promise = promise; this.disposable = disposable; @@ -180,14 +180,14 @@ namespace Cysharp.Threading.Tasks { static readonly Action callback = OnCanceled; - readonly UniTaskCompletionSource promise; + readonly IPromise promise; readonly SingleAssignmentDisposable disposable; readonly CancellationToken cancellationToken; readonly CancellationTokenRegistration registration; bool hasValue; - public FirstValueToUniTaskObserver(UniTaskCompletionSource promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken) + public FirstValueToUniTaskObserver(IPromise promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken) { this.promise = promise; this.disposable = disposable;