要監控 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 的執行狀態。根據你的需求和項目類型,可以選擇最適合你的方法。