在 C# 中,您可以通过将 Task 的 TaskCreationOptions 设置为 TaskCreationOptions.LongRunning 或 TaskCreationOptions.RunContinuationsAsynchronously,以指示将任务分配给新的线程或线程池并在后台运行。
以下是使用 TaskCreationOptions.LongRunning 方式实现后台执行的示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
// 使用 TaskCreationOptions.LongRunning 创建一个后台执行的 Task 对象
Task task = Task.Factory.StartNew(
() =>
{
Console.WriteLine("开始执行任务...");
Thread.Sleep(5000);
Console.WriteLine("任务执行完毕。");
},
CancellationToken.None,
TaskCreationOptions.LongRunning,
TaskScheduler.Default);
Console.WriteLine("主线程继续执行...");
Console.ReadLine();
}
}
在上述代码中,我们使用 Task.Factory.StartNew 方法创建了一个后台执行的 Task 对象,并通过 TaskCreationOptions.LongRunning 选项指示分配给新的线程执行。任务执行时将休眠 5 秒,以模拟执行长时间任务的情况。
另外,使用 TaskCreationOptions.RunContinuationsAsynchronously 选项也可以实现后台执行,例如:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 使用 TaskCreationOptions.RunContinuationsAsynchronously 创建一个后台执行的 Task 对象
Task task = Task.Run(async () =>
{
Console.WriteLine("开始执行任务...");
await Task.Delay(5000);
Console.WriteLine("任务执行完毕。");
}, TaskCreationOptions.RunContinuationsAsynchronously);
Console.WriteLine("主线程继续执行...");
Console.ReadLine();
}
}
希望这些示例代码可以帮助您实现 C# Task 后台执行。