亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C# taskscheduler如何實現任務的動態添加

c#
小樊
85
2024-10-16 19:24:23
欄目: 編程語言

在C#中,使用TaskScheduler類可以輕松地安排和執行任務。要實現任務的動態添加,你可以創建一個自定義的TaskScheduler類,該類繼承自TaskScheduler并重寫QueueTask方法。這樣,你可以在運行時根據需要動態地添加任務。

以下是一個簡單的示例,展示了如何創建一個自定義的TaskScheduler類并動態添加任務:

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

class CustomTaskScheduler : TaskScheduler
{
    private readonly ConcurrentQueue<Task> _tasks = new ConcurrentQueue<Task>();

    protected override IEnumerable<Task> GetScheduledTasks()
    {
        return _tasks;
    }

    protected override void QueueTask(Task task)
    {
        _tasks.Enqueue(task);
        base.QueueTask(task);
    }

    public void AddTask(Action action, TimeSpan delay)
    {
        var task = new Task(action);
        task.Delay(delay);
        AddTask(task);
    }
}

class Program
{
    static void Main(string[] args)
    {
        var customTaskScheduler = new CustomTaskScheduler();

        // 動態添加任務
        customTaskScheduler.AddTask(() => Console.WriteLine("Task 1 executed at: " + DateTime.Now), TimeSpan.FromSeconds(2));
        customTaskScheduler.AddTask(() => Console.WriteLine("Task 2 executed at: " + DateTime.Now), TimeSpan.FromSeconds(4));

        // 等待所有任務完成
        Task.WaitAll(customTaskScheduler.GetScheduledTasks().ToArray());
    }
}

在這個示例中,我們創建了一個名為CustomTaskScheduler的自定義TaskScheduler類。這個類使用ConcurrentQueue<Task>來存儲計劃任務。AddTask方法接受一個Action和一個TimeSpan延遲,然后創建一個新的Task實例,將其添加到隊列中,并調用基類的QueueTask方法來安排任務。

Main方法中,我們創建了一個CustomTaskScheduler實例,并使用AddTask方法動態添加了兩個任務。這些任務將在指定的延遲后執行。最后,我們使用Task.WaitAll等待所有任務完成。

0
长乐市| 恩施市| 武宣县| 泰来县| 大连市| 辽源市| 大化| 雷州市| 太和县| 格尔木市| 突泉县| 柯坪县| 福泉市| 上饶市| 会东县| 寻甸| 孝感市| 祁连县| 北安市| 枣阳市| 兴义市| 和静县| 克拉玛依市| 新建县| 赤峰市| 绥芬河市| 扶余县| 凭祥市| 周口市| 商城县| 凤阳县| 高邑县| 海淀区| 岳阳市| 广昌县| 麦盖提县| 鹰潭市| 雅安市| 娱乐| 高州市| 新津县|