0

在过去的几个小时里,我一直在努力让 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)

运行此程序我没有得到任何输出,只有以下例外:

mscorlib.dll 中出现“System.FormatException”类型的第一次机会异常 Microsoft.VisualBasic.dll 中出现“System.FormatException”类型的第一次机会异常 Microsoft.VisualBasic 中出现“System.InvalidCastException”类型的第一次机会异常.dll

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

谢谢

4

1 回答 1

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)
于 2014-03-15T11:48:22.213 回答