From fba6942d5fa42eb7d7e71840274b571e3bf5f423 Mon Sep 17 00:00:00 2001 From: piti6 Date: Thu, 17 Dec 2020 12:31:43 +0900 Subject: [PATCH] Accept GetStatus calling multiple times --- .../Plugins/UniTask/Runtime/UniTask.Factory.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs index 01b8116..c56cb03 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs @@ -341,10 +341,12 @@ namespace Cysharp.Threading.Tasks public UniTaskStatus GetStatus(short token) { var f = Interlocked.Exchange(ref factory, null); - if (f == null) throw new InvalidOperationException("Can't call twice."); + if (f != null) + { + task = f(); + awaiter = task.GetAwaiter(); + } - task = f(); - awaiter = task.GetAwaiter(); return task.Status; } @@ -383,10 +385,12 @@ namespace Cysharp.Threading.Tasks public UniTaskStatus GetStatus(short token) { var f = Interlocked.Exchange(ref factory, null); - if (f == null) throw new InvalidOperationException("Can't call twice."); + if (f != null) + { + task = f(); + awaiter = task.GetAwaiter(); + } - task = f(); - awaiter = task.GetAwaiter(); return task.Status; }