/// <summary>
/// 異步函式
/// </summary>
static async void AsyncFun()
{
// 裡面要有 await 關鍵字
// await 後面要接回傳 Task 的函式
// 因為回傳 Task 簡稱他為異步任務
List<formatter> f_ = new List<formatter>{
new Formatter("「異步任務」", Color.Red)};
Print("執行 {0} 『開始』", Color.Yellow, f_.ToArray());
bool ret_ = await DelayFun();
Print("執行 {0} 『結束』", Color.Yellow, f_.ToArray());
}
異步函式內需要有await 關鍵字
await 後面要接回傳 Task 的函式
因為回傳 Task 簡稱他為異步任務
/// <summary>
/// 異步任務
/// </summary>
/// <returns>true</returns>
static Task<bool> DelayFun()
{
return Task.Run(() =>
{
List<Formatter> f_ = new List<Formatter>{
new Formatter("等待五秒", Color.YellowGreen)};
Print("{0} 開始", Color.Red, f_.ToArray());
Thread.Sleep(5000);
Print("{0} 結束", Color.Red, f_.ToArray());
return true;
});
}
異步函式呼叫與一般函式一樣
只差在執行中不等待函式執行完
static void Main(string[] args)
{
....
// 異步函式
List<Formatter> f0_ = new List<Formatter>{
new Formatter("「異步函式」", Color.Red)};
Print("執行 {0} 開始", Color.Green, f0_.ToArray());
AsyncFun();
Print("執行 {0} 結束", Color.Green, f0_.ToArray());
....
}
最後可以看到「異步任務」
在程式執行完畢後
才把任務跑完
沒有留言:
張貼留言