要監(jiān)控 C# Task 的執(zhí)行狀態(tài),可以使用以下方法:
Task.Status
屬性:Task.Status
屬性返回一個 TaskStatus
枚舉值,表示任務(wù)的當(dāng)前狀態(tài)。可以通過輪詢此屬性來檢查任務(wù)的狀態(tài)。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
Task task = Task.Run(() =>
{
// 模擬長時間運行的任務(wù)
Task.Delay(2000).Wait();
});
while (!task.IsCompleted)
{
Console.WriteLine($"Task status: {task.Status}");
await Task.Delay(500);
}
Console.WriteLine("Task completed!");
}
}
ContinueWith
方法:ContinueWith
方法允許在任務(wù)完成后執(zhí)行另一個任務(wù)。這可以用于在任務(wù)完成時處理結(jié)果或檢查任務(wù)的狀態(tài)。
using System;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
Task task = Task.Run(() =>
{
// 模擬長時間運行的任務(wù)
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
關(guān)鍵字:在 C# 5.0 及更高版本中,可以使用 async/await
關(guān)鍵字簡化異步編程。通過將方法標(biāo)記為 async
并在需要等待的任務(wù)前添加 await
關(guān)鍵字,可以輕松地等待任務(wù)完成。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
try
{
await Task.Run(() =>
{
// 模擬長時間運行的任務(wù)
Task.Delay(2000).Wait();
});
Console.WriteLine("Task completed successfully.");
}
catch (Exception ex)
{
Console.WriteLine("Task faulted: " + ex);
}
Console.ReadLine();
}
}
這些方法可以幫助你監(jiān)控 C# Task 的執(zhí)行狀態(tài)。根據(jù)你的需求和項目類型,可以選擇最適合你的方法。