mirror of https://github.com/Cysharp/UniTask
32 lines
970 B
C#
32 lines
970 B
C#
#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))
|
|
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
|
|
|
|
using System.Threading;
|
|
|
|
namespace UniRx.Async.Internal
|
|
{
|
|
internal static class CancellationTokenHelper
|
|
{
|
|
public static bool TrySetOrLinkCancellationToken(ref CancellationToken field, CancellationToken newCancellationToken)
|
|
{
|
|
if (newCancellationToken == CancellationToken.None)
|
|
{
|
|
return false;
|
|
}
|
|
else if (field == CancellationToken.None)
|
|
{
|
|
field = newCancellationToken;
|
|
return true;
|
|
}
|
|
else if (field == newCancellationToken)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
field = CancellationTokenSource.CreateLinkedTokenSource(field, newCancellationToken).Token;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |