C# 实现异步队列中等待await执行完毕再执行下一个任务

该文章介绍了一个重新设计的异步队列,它能确保任务按照顺序同步执行,等待await表达式完成后才进行下一个任务,并在执行过程中自动取消未开始的任务。通过使用SemaphoreSlim和ConcurrentQueue实现并发控制和任务管理。

普通的异步队列可以回看我之前一篇博客:https://www.cnblogs.com/log9527blog/p/16517315.html

但是之前实现的异步队列中,任务如果出现await等待,会认为该任务已经完成,并且开始下一个任务。所有为了实现异步队列中等待await执行完毕再执行下一个任务,下面重写了新的异步队列:

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

namespace Text
{
    /// <summary>
    /// 异步任务队列
    /// <para>同步执行,等待委托内的await完成再执行下一个委托,并且自动取消中间的任务</para>
    /// </summary>
    public class SynchronizeTaskQueue
    {
        #region 执行

        /// <summary>
        /// 执行多个同步操作(同步执行,取消中间未执行的任务,传进来的委托需要try...catch...)
        /// </summary>
        /// <param name="func">异步操作</param&g
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值