【C#】两种最常用的Task阻塞方式(async/await和Result/Wait)

async void DDAsync()
{
    Logger.Debug("1-async");
    Task<bool> task = Task.Run(() =>
    {
        Logger.Debug("2-async");
        System.Threading.Thread.Sleep(9999);
        Logger.Debug("3-async");
        return true;
    });

    Logger.Debug("4-async");
    bool result = await task; // 当前线程不会进入阻塞,当前方法后续代码以ContinueWith执行实现代替阻塞
    Logger.Debug($"async_result={result}");
    Logger.Debug("5-async");
}

void DDSync()
{
    Logger.Debug("1-sync");
    Task<bool> task = Task.Run(() =>
    {
        Logger.Debug("2-sync");
        System.Threading.Thread.Sleep(9999);
        Logger.Debug("3-sync");
        return true;
    });

    Logger.Debug("4-sync");
    bool result = task.Result; // 当前线程进入阻塞,取结果值会自动调用task.Wait()
    Logger.Debug($"sync_result={result}");
    Logger.Debug("5-sync");
}

Load += (s, e) =>
{
    Logger.Debug("start-async");
    DDAsync();
    Logger.Debug("end-async");

    Logger.Debug("start-sync");
    DDSync();
    Logger.Debug("end-sync");
};



public class Logger
{
    public void Debug(string logs) => Console.WriteLine(logs);
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值