Task、async/await

Task 是什么?
Task = 任务(相当于一个线程要做的事)可以理解成:交给后台去做的一件工作
2. async 是什么?
async = 标记这个方法是异步方法告诉程序:这个方法里有等待、有后台任务
3. await 是什么?
await = 等待后台任务完成,但不卡界面、不卡程序最关键:等待时,程序还能继续响应!
————————————————————————————————————————————————————————————————————————

using System;
using System.Threading.Tasks;

class Program
{
static void Main()
{
Console.WriteLine("开始");
GetValueAsync();
Console.WriteLine("主线程不卡顿");
Console.ReadKey();
}

// 异步方法,返回 int
static async Task GetValueAsync()
{
    // 等待后台任务完成,并获取结果
    int result = await CalcAsync();

    Console.WriteLine("计算结果:" + result);
}

// 后台计算任务
static Task<int> CalcAsync()
{
    return Task.Run(() =>
    {
        return 100;  // 返回结果
    });
}

}

这里的Task.Run相当于new Thread(DoWork).Start();
开启一个后台线程去干活

——————————————————————————————————————————————————————————

using System;
using System.Threading.Tasks; // 必须引用
using System.Threading;

class Program
{
// 程序入口
static void Main(string[] args)
{
// ====================== 执行顺序 1 ======================
Console.WriteLine("1 主线程开始");

    // 调用异步方法
    TestAsync();

    // ====================== 执行顺序 2 ======================
    Console.WriteLine("4 主线程继续做别的事,不卡顿");

    Console.ReadKey();
}

// 异步方法(必须加 async)
static async Task TestAsync()
{
    // ====================== 执行顺序 3 ======================
    Console.WriteLine("2 进入异步方法");

    // ====================== 执行顺序 4 ======================
    // 等待 2 秒,但不卡主线程!
    await Task.Delay(2000);

    // ====================== 执行顺序 5 ======================
    Console.WriteLine("3 后台任务完成");
}

}

posted @ 2026-04-02 15:44  菜鸟的奋斗军  阅读(0)  评论(0)    收藏  举报