BroadcastBlock<T> 类

定义

提供缓冲区,用于一次存储最多一个元素,在每个消息抵达时覆盖每个消息。

generic <typename T>
public ref class BroadcastBlock sealed : System::Threading::Tasks::Dataflow::IPropagatorBlock<T, T>, System::Threading::Tasks::Dataflow::IReceivableSourceBlock<T>, System::Threading::Tasks::Dataflow::ISourceBlock<T>, System::Threading::Tasks::Dataflow::ITargetBlock<T>
public sealed class BroadcastBlock<T> : System.Threading.Tasks.Dataflow.IPropagatorBlock<T,T>, System.Threading.Tasks.Dataflow.IReceivableSourceBlock<T>, System.Threading.Tasks.Dataflow.ISourceBlock<T>, System.Threading.Tasks.Dataflow.ITargetBlock<T>
type BroadcastBlock<'T> = class
    interface IPropagatorBlock<'T, 'T>
    interface ITargetBlock<'T>
    interface IDataflowBlock
    interface ISourceBlock<'T>
    interface IReceivableSourceBlock<'T>
type BroadcastBlock<'T> = class
    interface IDataflowBlock
    interface IPropagatorBlock<'T, 'T>
    interface ISourceBlock<'T>
    interface ITargetBlock<'T>
    interface IReceivableSourceBlock<'T>
Public NotInheritable Class BroadcastBlock(Of T)
Implements IPropagatorBlock(Of T, T), IReceivableSourceBlock(Of T), ISourceBlock(Of T), ITargetBlock(Of T)

类型参数

T

指定由数据流块缓冲的数据类型。

继承
BroadcastBlock<T>
实现

注解

注意

TPL 数据流库(System.Threading.Tasks.Dataflow 命名空间)不随 .NET 一起分发。 若要在 Visual Studio 中安装 System.Threading.Tasks.Dataflow 命名空间,请打开项目,选择“项目”菜单中的“管理 NuGet 包”,再在线搜索 System.Threading.Tasks.Dataflow 包。 或者,若要使用 .NET Core CLI 进行安装,请运行 dotnet add package System.Threading.Tasks.Dataflow

BroadcastBlock<T> 一次最多公开一个元素。 但是,与 不同 WriteOnceBlock<T>,当向 块提供新元素时,该元素将被覆盖。 BroadcastBlock<T> 确保在允许覆盖元素之前将当前元素广播到任何链接的目标。

构造函数

BroadcastBlock<T>(Func<T,T>)

用指定的克隆函数初始化 BroadcastBlock<T>

BroadcastBlock<T>(Func<T,T>, DataflowBlockOptions)

BroadcastBlock<T>使用指定的克隆函数 和 DataflowBlockOptions初始化 。

属性

Completion

获取 Task,其表示数据流块的操作和完成。

方法

Complete()

通知 IDataflowBlock,告知其不应该生成任何更多的消息也不应使用任何更多的延迟消息。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
LinkTo(ITargetBlock<T>, DataflowLinkOptions)

ISourceBlock<TOutput> 链接到指定的 ITargetBlock<TInput>

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回一个字符串,该字符串表示此 IDataflowBlock 实例的格式化名称。

TryReceive(Predicate<T>, T)

IReceivableSourceBlock<TOutput> 中尝试同步接收可用输出项。

显式接口实现

IDataflowBlock.Fault(Exception)

导致 IDataflowBlockFaulted 状态下完成。

IReceivableSourceBlock<T>.TryReceiveAll(IList<T>)

IReceivableSourceBlock<TOutput> 中尝试同步接收所有可用项。

ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader, ITargetBlock<T>, Boolean)

由链接的 ITargetBlock<TInput> 调用,以接受并使用以前由此 DataflowMessageHeader 提供的 ISourceBlock<TOutput>

ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader, ITargetBlock<T>)

由链接的 ITargetBlock<TInput> 调用,以发布由此 DataflowMessageHeader 发布的以前已保留的 ISourceBlock<TOutput>

ISourceBlock<T>.ReserveMessage(DataflowMessageHeader, ITargetBlock<T>)

由链接的 ITargetBlock<TInput> 调用,以保留以前由此 DataflowMessageHeader 提供的 ISourceBlock<TOutput>

ITargetBlock<T>.OfferMessage(DataflowMessageHeader, T, ISourceBlock<T>, Boolean)

ITargetBlock<TInput> 提供消息,向目标提供使用和延迟消息的机会。

扩展方法

AsObservable<TOutput>(ISourceBlock<TOutput>)

IObservable<T> 创建新的 ISourceBlock<TOutput> 抽象。

AsObserver<TInput>(ITargetBlock<TInput>)

IObserver<T> 创建新的 ITargetBlock<TInput> 抽象。

LinkTo<TOutput>(ISourceBlock<TOutput>, ITargetBlock<TOutput>)

ISourceBlock<TOutput> 链接到指定的 ITargetBlock<TInput>

LinkTo<TOutput>(ISourceBlock<TOutput>, ITargetBlock<TOutput>, Predicate<TOutput>)

ISourceBlock<TOutput>使用指定的ITargetBlock<TInput>筛选器将 链接到指定的 。

LinkTo<TOutput>(ISourceBlock<TOutput>, ITargetBlock<TOutput>, DataflowLinkOptions, Predicate<TOutput>)

ISourceBlock<TOutput>使用指定的ITargetBlock<TInput>筛选器将 链接到指定的 。

OutputAvailableAsync<TOutput>(ISourceBlock<TOutput>)

提供可异步监视可利用的输出的源的 Task<TResult>

OutputAvailableAsync<TOutput>(ISourceBlock<TOutput>, CancellationToken)

提供可异步监视可利用的输出的源的 Task<TResult>

Post<TInput>(ITargetBlock<TInput>, TInput)

将项发送到 ITargetBlock<TInput> 中。

Receive<TOutput>(ISourceBlock<TOutput>)

同步接收来自指定源的值。

Receive<TOutput>(ISourceBlock<TOutput>, CancellationToken)

同步从指定的数据源中接收值并提供标记来取消操作。

Receive<TOutput>(ISourceBlock<TOutput>, TimeSpan)

同步从指定的数据源中接收值,观察可选的超时期限。

Receive<TOutput>(ISourceBlock<TOutput>, TimeSpan, CancellationToken)

同步从指定的数据源中接收值,提供标记以取消操作并观察可选的超时间隔。

ReceiveAllAsync<TOutput>(IReceivableSourceBlock<TOutput>, CancellationToken)

创建一个 IAsyncEnumerable<T> ,用于从源接收所有数据。

ReceiveAsync<TOutput>(ISourceBlock<TOutput>)

异步接收来自指定源的值。

ReceiveAsync<TOutput>(ISourceBlock<TOutput>, CancellationToken)

异步从指定的数据源中接收值并提供标记来取消操作。

ReceiveAsync<TOutput>(ISourceBlock<TOutput>, TimeSpan)

异步从指定的数据源中接收值,观察可选的超时期限。

ReceiveAsync<TOutput>(ISourceBlock<TOutput>, TimeSpan, CancellationToken)

异步从指定的数据源中接收值,提供标记以取消操作并观察可选的超时间隔。

SendAsync<TInput>(ITargetBlock<TInput>, TInput)

为目标消息块异步提供消息,允许延期。

SendAsync<TInput>(ITargetBlock<TInput>, TInput, CancellationToken)

为目标消息块异步提供消息,允许延期。

TryReceive<TOutput>(IReceivableSourceBlock<TOutput>, TOutput)

尝试从 ISourceBlock<TOutput> 中同步接收一个项目。

适用于