스토리지

Unitask Cancel 후 아랫과정 실행하고 싶을 때 본문

Unity

Unitask Cancel 후 아랫과정 실행하고 싶을 때

ljw4104 2024. 3. 6. 16:20
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;

public class Starter : MonoBehaviour
{
    private CancellationTokenSource source;
    
    private void Start()
    {
        source = new CancellationTokenSource();
        
        Practice().Forget();
        Invoke(nameof(StopTimer), 1f);
    }
    
    private async UniTaskVoid Practice()
    {
        Debug.Log("안녕하세요 1");

        await UniTask.WaitForSeconds(3f, cancellationToken: source.Token).SuppressCancellationThrow();
        
        Debug.Log("안녕하세요 2");
    }

    private void StopTimer()
    {
        source?.Cancel();
        Debug.Log("StopTimer called");
    }
}

 

WaitForSeconds에 token만 붙여놓으면 Cancel 후 아래에 있는 

Debug.Log("안녕하세요 2");

 

이 친구를 실행 안하고 끝나버린다.

 

뒤에

SuppressCancellationThrow()

 

함수를 붙여주면 Cancel되자마자 아래것을 실행한다.

'Unity' 카테고리의 다른 글

[3.17] 인터페이스, Virtual  (0) 2021.03.17
Comments