VB.NET中的基本BlockingCollection生成器使用者

时间:2014-03-15 10:13:02

标签: vb.net producer-consumer blockingcollection

过去几个小时我一直在努力让BlockingCollection的基本实现工作。我似乎无法在我的生活中找到VB.NET的教程,所以一直试图从C#中的教程中学到一些东西。

我只是想让一个基本的实现工作,所以我可以继续做我真正需要的事情。但我被卡住了。

这是我目前的代码:

Dim blockingCollection As BlockingCollection(Of String) = New BlockingCollection(Of String)
        Dim count As Integer = 0

        Task.Factory.StartNew(Sub()
                                  While (True)
                                      blockingCollection.Add("value" + count)
                                      count = count + 1
                                  End While
                              End Sub)

        Task.Factory.StartNew(Sub()
                                  For Each value As String In blockingCollection.GetConsumingEnumerable()
                                      Debug.Print("Worker 1: " + value)
                                  Next
                              End Sub)

我没有得到运行它的输出,只有以下例外:

  

发生了'System.FormatException'类型的第一次机会异常   mscorlib.dll类型'System.FormatException'的第一次机会异常   发生在Microsoft.VisualBasic.dll类型的第一次机会异常   Microsoft.VisualBasic.dll

中发生'System.InvalidCastException'

过去几个小时我一直在谷歌搜索试图解决这个问题,但无济于事。希望有人可以提供帮助。

由于

1 个答案:

答案 0 :(得分:1)

此代码执行,但我不知道你想要什么。

    Dim blockingCollection As BlockingCollection(Of String) = New BlockingCollection(Of String)
    Dim count As Integer = 0

    Task.Factory.StartNew(Sub()
                              While True
                                  blockingCollection.Add("value" & count.ToString)
                                  count = count + 1
                              End While
                          End Sub)

    Task.Factory.StartNew(Sub()
                              For Each value As String In blockingCollection.GetConsumingEnumerable()
                                  Debug.WriteLine("Worker 1: " & value)
                              Next
                          End Sub)