///
/// 异步执行任务
///
///
public static void RunTask()
{
Task parent = new Task(async () =>
{
string sql;
DataSet ds;
int count;
while (true)
{
sql = "select * from task where next_date <='" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "' and state = 0 order by next_date asc limit 5";
ds = SQLiteHelper.ExecuteDataSet(SQLiteHelper.LocalDbConnectionString, sql, CommandType.Text);
count = ds.Tables[0].Rows.Count;
Console.WriteLine("count=" + count.ToString());
if (count > 0)
{
List Tasks = new List();
//int i = 0;
foreach (DataRow mDr in ds.Tables[0].Rows)
{
Dictionary taskData = new Dictionary();
foreach (DataColumn mDc in ds.Tables[0].Columns)
{
taskData.Add(mDc.ToString(), mDr[mDc].ToString());
}
string updatesql = "update task set state = 1 where id = " + taskData["id"];
int rs = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.LocalDbConnectionString, updatesql, CommandType.Text);
//runBackUp(taskData,i);
Tasks.Add(Task.Run(() => runBackUp(taskData)));
Thread.Sleep(1000 * 3);
//taskData.Clear();
//tasks[i] = Task.Factory.StartNew(() => runBackUp(taskData, i));
//i++;
}
//Task.WaitAll(tasks);
await Task.WhenAll(Tasks);
}
Thread.Sleep(1000 * 5);
}
});
parent.Start();
}
private static void runBackUp(Dictionary taskData)
{
foreach (KeyValuePair kv in taskData)
{
Console.WriteLine(kv.Key + ":" + kv.Value);
}
}