XFEstudio/MyFirstRespo / XFEToolBox/Utilities/TaskManager.cs

namespace XFEToolBox.Utilities;

public static class TaskManager
{
    public static Dictionary<int, NamedTask> TaskDictionary { get; set; } = [];

    public static async Task Run(Action action, string taskName = "未命名任务")
    {
        var task = Task.Run(action);
        TaskDictionary.Add(task.Id, new(taskName, task));
        await task;
        TaskDictionary.Remove(task.Id);
    }

    public static async Task<TResult> Run<TResult>(Func<TResult> function, string taskName = "未命名任务")
    {
        var task = Task.Run(function);
        TaskDictionary.Add(task.Id, new(taskName, task));
        var result = await task;
        TaskDictionary.Remove(task.Id);
        return result;
    }
}