1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
- using System.Threading;
- using UnityEngine;
- using Cysharp.Threading.Tasks.Triggers;
- using System;
- using Cysharp.Threading.Tasks.Internal;
- namespace Cysharp.Threading.Tasks
- {
- public static partial class CancellationTokenSourceExtensions
- {
- readonly static Action<object> CancelCancellationTokenSourceStateDelegate = new Action<object>(CancelCancellationTokenSourceState);
- static void CancelCancellationTokenSourceState(object state)
- {
- var cts = (CancellationTokenSource)state;
- cts.Cancel();
- }
- public static IDisposable CancelAfterSlim(this CancellationTokenSource cts, int millisecondsDelay, DelayType delayType = DelayType.DeltaTime, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
- {
- return CancelAfterSlim(cts, TimeSpan.FromMilliseconds(millisecondsDelay), delayType, delayTiming);
- }
- public static IDisposable CancelAfterSlim(this CancellationTokenSource cts, TimeSpan delayTimeSpan, DelayType delayType = DelayType.DeltaTime, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
- {
- return PlayerLoopTimer.StartNew(delayTimeSpan, false, delayType, delayTiming, cts.Token, CancelCancellationTokenSourceStateDelegate, cts);
- }
- public static void RegisterRaiseCancelOnDestroy(this CancellationTokenSource cts, Component component)
- {
- RegisterRaiseCancelOnDestroy(cts, component.gameObject);
- }
- public static void RegisterRaiseCancelOnDestroy(this CancellationTokenSource cts, GameObject gameObject)
- {
- var trigger = gameObject.GetAsyncDestroyTrigger();
- trigger.CancellationToken.RegisterWithoutCaptureExecutionContext(CancelCancellationTokenSourceStateDelegate, cts);
- }
- }
- }
|