Release handle when cancellation is requested

pull/521/head
Luciano Prestes Cavalcanti 2023-11-22 08:09:03 -03:00
parent 5cc97c7f00
commit 36ac0863ad
2 changed files with 19 additions and 1 deletions

View File

@ -7,6 +7,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Runtime.ExceptionServices;
using System.Threading;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
namespace Cysharp.Threading.Tasks
@ -171,6 +172,10 @@ namespace Cysharp.Threading.Tasks
completed = true;
if (cancellationToken.IsCancellationRequested)
{
If (handle.IsValid())
{
Addressables.Release(handle);
}
core.TrySetCanceled(cancellationToken);
}
else if (handle.Status == AsyncOperationStatus.Failed)
@ -215,6 +220,10 @@ namespace Cysharp.Threading.Tasks
if (cancellationToken.IsCancellationRequested)
{
completed = true;
if (handle.IsValid())
{
Addressables.Release(handle);
}
core.TrySetCanceled(cancellationToken);
return false;
}
@ -353,6 +362,10 @@ namespace Cysharp.Threading.Tasks
completed = true;
if (cancellationToken.IsCancellationRequested)
{
if (handle.IsValid())
{
Addressables.Release(handle);
}
core.TrySetCanceled(cancellationToken);
}
else if (argHandle.Status == AsyncOperationStatus.Failed)
@ -402,6 +415,10 @@ namespace Cysharp.Threading.Tasks
if (cancellationToken.IsCancellationRequested)
{
completed = true;
if (handle.IsValid())
{
Addressables.Release(handle);
}
core.TrySetCanceled(cancellationToken);
return false;
}

View File

@ -2,7 +2,8 @@
"name": "UniTask.Addressables",
"references": [
"UniTask",
"Unity.ResourceManager"
"Unity.ResourceManager",
"Unity.Addressables"
],
"includePlatforms": [],
"excludePlatforms": [],