【问题标题】:Why isn't 'post' a method of Dataflow.TransformBlock? Doesn't compile为什么“发布”不是 Dataflow.TransformBlock 的方法?不编译
【发布时间】:2014-01-02 00:44:44
【问题描述】:

examples on the web 中,我看到有一个方法Dataflow.TransformBlock.Post(),但我无法编译:

Dim q As New Dataflow.TransformBlock(Of Integer, Integer)(Function(x As Integer) As Integer
                                                                  Return x
                                                              End Function)
q.post(5)

错误是:

“post”不是“System.Threading.Tasks.Dataflow.TransformBlock(Of Integer, Integer)”的成员。

【问题讨论】:

  • 可能是 Dataflow 命名空间中的扩展方法,也可能是大小写问题。尝试“发布”而不是“发布”并尝试导入 Dataflow 命名空间。
  • @Strilanc AFAIK VB 不区分大小写,所以这不应该是问题。
  • @svick 没错。我正在考虑由于不区分大小写而引入歧义的可能性不大......我想在这种情况下无论如何这将是一个不同的错误。

标签: .net vb.net task-parallel-library tpl-dataflow


【解决方案1】:

Post()是一个扩展方法,也就是说你需要导入TPL Dataflow命名空间:

Imports System.Threading.Tasks.Dataflow

如果这样做,您还可以从块类名称中删除 Dataflow. 前缀。

【讨论】:

    【解决方案2】:

    根据MSDN,这仅在 .NET 4.5 中可用 - 也许您使用的是较旧的 .NET 版本和/或未在项目中使用 Imports System.Threading.Tasks.Dataflow 和/或不引用 System.Threading.Tasks.Dataflow.dll

    【讨论】:

    • 如果他使用的是旧版本的 .Net 或缺少引用,他将根本无法使用 TPL Dataflow,因此之前的代码也无法编译。
    猜你喜欢
    • 2020-06-11
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多