异步操作:
"异步"指的是代码执行不按照顺序进行,而是通过使用回调函数、Promise、async/await 等机制来实现非阻塞式的执行。在异步执行的情况下,代码不会等待前一段代码执行完成,而是继续执行后续的代码。当异步操作完成后,系统会通知代码进行相应的处理。 采用async / await 实现 c#执行执行异步操作 采用 状态机调用的方式状态机调用:
指的是通过状态机(State Machine)的方式来实现代码逻辑控制和状态管理的一种方法。 状态机是一种抽象模型,它可以描述一个系统或者对象的不同状态以及在这些状态之间的转换规则。在代码中使用状态机,通常涉及以下几个概念:- 状态(State):表示系统或对象所处的特定状态。例如,一个订单可以有 "待支付"、"已支付"、"已发货" 等多个状态。
- 事件(Event):触发状态转换的事件。例如,订单可以有 "支付"、"发货" 等事件。
- 转换(Transition):描述状态之间的转换规则。当一个事件发生时,根据当前状态和事件,决定将系统或对象的状态从一个状态转换到另一个状态。
- 动作(Action):在状态转换过程中执行的具体操作。例如,当订单从 "待支付" 状态转换到 "已支付" 状态时,可能会触发发送支付成功通知的动作。
- 定义状态机:定义系统或对象的所有可能状态、事件和转换规则,以及每个状态转换时需要执行的动作。
- 初始化状态:将系统或对象的初始状态设置为最初的状态。
- 接收事件:根据外部条件或用户操作,触发相应的事件。
- 处理事件:根据当前状态和接收到的事件,查找对应的转换规则,并执行相关的动作。
- 更新状态:根据转换规则确定的目标状态,将系统或对象的状态更新为新的状态。
- 重复步骤3-5,处理后续的事件,实现状态的连续转换和动态变化。
优化异步:
减少调用线程 异步不等于多线程 Task.Run() 该方法会将异步方法放入新线程 标注 await和async 会返回数据本身 ,不会返回Task 但是不标注返回的是 Task 但是也是异步方法 async 方法效率略低,可能占用多线程资源,但是使用可以避免死锁等问题 如果某个异步方法只是转发其他异步方法,则不需要async 异步编程不要使用sleep()会阻塞线程,而是使用 await Task.Delay()Cancellation 参数 :
提前终止,请求超时,取消请求 CancellationToken 结构体是 .NET Framework 中用于取消异步操作的一种机制。它通常与 Task 和 async/await 等异步编程模式一起使用,用来优雅地处理异步操作的取消。 CancellationToken 结构体包含一个 CancellationTokenSource 对象和一个 CancellationToken 变量。CancellationTokenSource 对象用来创建 CancellationToken 对象,并设置一个 CancellationToken 取消标志位。当 CancellationTokenSource 对象的 Cancel 方法被调用时,就会将这个标志位设置为 true,从而通知异步方法或者线程需要取消任务的执行。 在异步操作中,可以通过传递一个 CancellationToken 对象给异步方法,以便在异步操作执行期间能够检查 CancellationToken 是否已经被取消。如果 CancellationToken 被取消,则异步方法应该尽快停止工作并返回结果,以便实现优雅的退出和资源回收。 CancellationToken 结构体还支持多个 CancellationToken 合并的功能。通过调用 CancellationToken.Register 方法,可以将 CancellationToken 注册到 CancellationTokenSource 对象上,从而将多个 CancellationToken 合并成一个,以便在任何一个 CancellationToken 被取消时,都可以触发异步任务的取消。 总之,CancellationToken 结构体是一个重要的异步编程工具,它提供了一种优雅、高效的机制来处理异步操作的取消,并且可以很好地和 Task、async/await 等异步编程模式结合使用,使代码更加健壮、可靠。yield return关键词:
yield return 是 C# 中的关键字组合,用于在迭代器(iterator)方法中生成一个序列。它提供了一种简洁的方式来实现按需生成数据序列的功能。 在一个带有 yield return 的方法中,可以使用 yield return来返回序列中的每个元素,并保留方法的当前状态。每次调用迭代器的 yield return方法时,都会执行 yield return 语句,并返回一个元素。然后,方法的执行会暂停直到下一次调用 yield return 方法。 异步 同步不要混用Link :
- from
- where
- select
- Where
- Select
- OrderBy
- GroupBy
- OrderByDescending
- First
- FirstOrDefault
- Single
- SingleOrDefault
- Skip
- Take
- Any