C# 控制台应用程序 - 运行任务连续循环

Yic*_*Lin 0 c# multithreading console-application

我在控制台应用程序中使用 while 循环创建多个任务。
从数据库中选择和更新记录。
我的程序只会执行一次然后关闭窗口。
如何保持控制台窗口打开,并无限运行任务。

static void Main(string[] args)
{
    Task.Run(async () =>  // <- marked async
    {
        while (true)
        {
            InsertProcess(GameList.RO1);
            await Task.Delay(5000);
        }
    });
    Task.Run(async () =>  // <- marked async
    {
        while (true)
        {
            InsertProcess(GameList.ROS);
            await Task.Delay(5000);
        }
    });
}

public static void InsertProcess(Game game)
{
    using (SqlConnection conn = new SqlConnection(RO1DBConn))
    {
        // ... query database
    }
}
Run Code Online (Sandbox Code Playgroud)

Ctz*_*525 5

每个 Task.Run 返回一个任务对象。您必须收集这些引用,并使用 Task.WaitAll 方法等待这两个任务完成。WaitAll 等待任务记录数组。

Task task1 = Task.Run(async () =>  // <- marked async
{
    while (true)
    {
        InsertProcess(GameList.RO1);
        await Task.Delay(5000);
    }
});
Task task2 = Task.Run(async () =>  // <- marked async
{
    while (true)
    {
        InsertProcess(GameList.ROS);
        await Task.Delay(5000);
    }
});

Task.WaitAll(new []{task1, task2});
Run Code Online (Sandbox Code Playgroud)