c# unity 異步任務隊列


異步任務隊列,十分好用

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;

/// <summary>
/// 異步任務隊列
/// </summary>
public class AsyncQueueTask
{
    public delegate Task<bool> TaskDel(object data);
    private bool isWait;
    
    //方法隊列
    Queue<TaskDel> taskQueue = new Queue<TaskDel>();
    //參數隊列
    Queue<object> paraQueue = new Queue<object>();
    
    
    
    /// <summary>
    /// 調用這個即可
    /// </summary>
    /// <param name="ac">方法</param>
    /// <param name="data">參數</param>
    public void AddQueueTask(TaskDel ac, object data)
    {
        Debug.Log("入隊");
        taskQueue.Enqueue(ac);
        paraQueue.Enqueue(data);
        StartTask();
    }
    
    async void StartTask()
    {
        if (!isWait && taskQueue.Count != 0)
        {
            isWait = true;
            await taskQueue.Peek()(paraQueue.Peek());
            Debug.Log("出隊");
            taskQueue.Dequeue();
            paraQueue.Dequeue();
            isWait = false;
            StartTask();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM