要监控 C# Task 的执行状态,可以使用以下方法:
- 使用
Task.Status
属性:
Task.Status
属性返回一个 TaskStatus
枚举值,表示任务的当前状态。可以通过轮询此属性来检查任务的状态。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Task task = Task.Run(() =>
{
// 模拟长时间运行的任务
Task.Delay(2000).Wait();
});
while (!task.IsCompleted)
{
Console.WriteLine($"Task status: {task.Status}");
await Task.Delay(500);
}
Console.WriteLine("Task completed!");
}
}
- 使用
ContinueWith
方法:
ContinueWith
方法允许在任务完成后执行另一个任务。这可以用于在任务完成时处理结果或检查任务的状态。
using System;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
Task task = Task.Run(() =>
{
// 模拟长时间运行的任务
Task.Delay(2000).Wait();
});
task.ContinueWith(t =>
{
if (t.IsFaulted)
{
Console.WriteLine("Task faulted: " + t.Exception);
}
else if (t.IsCanceled)
{
Console.WriteLine("Task canceled.");
}
else
{
Console.WriteLine("Task completed successfully.");
}
});
Console.ReadLine();
}
}
- 使用
async/await
关键字:
在 C# 5.0 及更高版本中,可以使用 async/await
关键字简化异步编程。通过将方法标记为 async
并在需要等待的任务前添加 await
关键字,可以轻松地等待任务完成。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
try
{
await Task.Run(() =>
{
// 模拟长时间运行的任务
Task.Delay(2000).Wait();
});
Console.WriteLine("Task completed successfully.");
}
catch (Exception ex)
{
Console.WriteLine("Task faulted: " + ex);
}
Console.ReadLine();
}
}
这些方法可以帮助你监控 C# Task 的执行状态。根据你的需求和项目类型,可以选择最适合你的方法。