一款简单易用的基础网络通讯组件库。

AsyncExchangeT

精简版线程安全单槽异步交接(单生产者 + 单消费者,不支持并发写队列): 写:一次只能有一个未消费数据,写调用返回的任务在该数据被读取并 Dispose 后完成,返回值表示是否成功消费。 读:无数据则挂起,得到 ReadLease 后需 Dispose 触发写端完成。Complete 后立即完成所有挂起的读写操作,后续 Read 返回完成租约且不传递有效数据。

Definition

命名空间: TouchSocket.Core
程序集: TouchSocket.Core (在 TouchSocket.Core.dll 中) 版本:4.1.4.7+7f7e1f78093c99347956e09330d5d7aca1d2bdf2
C#
public sealed class AsyncExchange<T> : IValueTaskSource<ReadLease<T>>, 
	IValueTaskSource<bool>
Inheritance
Object    AsyncExchangeT
Implements
IValueTaskSourceReadLeaseT, IValueTaskSourceBoolean

类型参数

T

[缺少 "T:TouchSocket.Core.AsyncExchange`1" 的 <typeparam name="T"/> 文档]

构造函数

AsyncExchangeT初始化 AsyncExchangeT 类的一个新实例

属性

IsCompleted 获取当前是否已完成(即已调用 Complete,且没有未消费数据和挂起的读写操作)。

方法

Complete 标记当前交接已完成。调用后立即完成所有挂起的读写操作, 挂起的读取操作返回完成状态且不传递有效数据,挂起的写入操作返回 表示未成功消费,后续不再接受新的写入请求。
EqualsDetermines whether the specified object is equal to the current object.
(继承自 Object。)
GetHashCodeServes as the default hash function.
(继承自 Object。)
GetTypeGets the Type of the current instance.
(继承自 Object。)
ReadAsync 异步读取数据。如果当前有可用数据则立即返回,否则挂起等待数据写入或交接完成。 返回的 ReadLeaseT 需在读取后调用 Dispose 以释放资源并通知写端完成。 若已完成交接,则返回已完成的租约。
Reset 重置当前交接状态。仅在已完成且无未消费数据和挂起操作时可调用, 否则会抛出异常。重置后可重新开始新的交接流程。
ToStringReturns a string that represents the current object.
(继承自 Object。)
WriteAsync 异步写入数据。如果当前有未消费数据或有挂起的写操作,则抛出异常; 否则将数据写入并挂起等待读取端消费,消费后写操作完成。 若已完成交接,则抛出异常。

扩展方法

ToJsonString 转换为Json
(由 SerializeConvert 定义。)

显式接口实现

参见