91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C# taskscheduler怎樣實現任務的持久化

c#
小樊
82
2024-10-16 19:28:22
欄目: 編程語言

在C#中,使用Task Scheduler庫可以方便地創建和管理任務。但是,默認情況下,任務調度器并不支持任務的持久化。為了實現任務的持久化,你需要將任務數據存儲在持久性存儲中,例如數據庫或文件系統。

以下是一個簡單的示例,展示了如何使用SQLite數據庫實現任務持久化:

  1. 首先,安裝SQLite數據庫提供程序。在.NET項目中,可以使用NuGet包管理器安裝System.Data.SQLite包。
Install-Package System.Data.SQLite
  1. 創建一個SQLite數據庫表來存儲任務信息。例如,創建一個名為tasks的表,包含IdNameDescriptionLastExecutionTime字段。
CREATE TABLE tasks (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name TEXT NOT NULL,
    Description TEXT,
    LastExecutionTime DATETIME
);
  1. 在C#代碼中,使用SQLite數據庫提供程序連接到數據庫并執行SQL命令。以下是一個示例,展示了如何創建任務、讀取任務和更新任務:
using System;
using System.Data.SQLite;

class TaskScheduler
{
    private static string dbPath = "path/to/your/database.db";

    public static void CreateTask(string name, string description)
    {
        using (SQLiteConnection connection = new SQLiteConnection($"Data Source={dbPath};"))
        {
            connection.Open();

            string sql = "INSERT INTO tasks (Name, Description) VALUES (?, ?)";
            using (SQLiteCommand command = new SQLiteCommand(sql, connection))
            {
                command.Parameters.AddWithValue("@name", name);
                command.Parameters.AddWithValue("@description", description);

                command.ExecuteNonQuery();
            }
        }
    }

    public static TaskInfo GetTaskById(int id)
    {
        using (SQLiteConnection connection = new SQLiteConnection($"Data Source={dbPath};"))
        {
            connection.Open();

            string sql = "SELECT * FROM tasks WHERE Id = @id";
            using (SQLiteCommand command = new SQLiteCommand(sql, connection))
            {
                command.Parameters.AddWithValue("@id", id);

                using (SQLiteDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return new TaskInfo
                        {
                            Id = reader["Id"].ToInt32(),
                            Name = reader["Name"].ToString(),
                            Description = reader["Description"].ToString(),
                            LastExecutionTime = reader["LastExecutionTime"].ToDateTime()
                        };
                    }
                }
            }
        }

        return null;
    }

    public static void UpdateTask(TaskInfo task)
    {
        using (SQLiteConnection connection = new SQLiteConnection($"Data Source={dbPath};"))
        {
            connection.Open();

            string sql = "UPDATE tasks SET Name = @name, Description = @description, LastExecutionTime = @lastExecutionTime WHERE Id = @id";
            using (SQLiteCommand command = new SQLiteCommand(sql, connection))
            {
                command.Parameters.AddWithValue("@id", task.Id);
                command.Parameters.AddWithValue("@name", task.Name);
                command.Parameters.AddWithValue("@description", task.Description);
                command.Parameters.AddWithValue("@lastExecutionTime", task.LastExecutionTime);

                command.ExecuteNonQuery();
            }
        }
    }
}

class TaskInfo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime LastExecutionTime { get; set; }
}

現在,你可以使用TaskScheduler類創建、讀取和更新任務,這些任務的數據將被持久化到SQLite數據庫中。你可以根據實際需求擴展此示例,例如添加刪除任務的功能。

0
子洲县| 上蔡县| 册亨县| 崇仁县| 江安县| 那曲县| 个旧市| 安顺市| 鄂州市| 偃师市| 西乌珠穆沁旗| 工布江达县| 商南县| 赤城县| 大港区| 林芝县| 双流县| 沂水县| 孝义市| 日照市| 东丽区| 建昌县| 盐源县| 民丰县| 三明市| 咸阳市| 房产| 康平县| 福建省| 泰安市| 盐亭县| 麦盖提县| 正镶白旗| 忻州市| 洞头县| 南平市| 新野县| 上栗县| 磐安县| 额尔古纳市| 桃园县|