多任务覆盖变量

时间:2018-04-12 03:52:51

标签: vb.net multithreading multitasking overrides

首先抱歉我的英语不好!

然后现在,我的问题:我有一个我需要快速运行的流程 - 它有大量的数据,我想以多线程/多任务方式运行 - (我不知道它是否&#39 ;这是最好的方法)

我有两个subs(),如下所示:

requestLayout

我能够在多线程中运行上面的代码 - 并且它运行完美(18000rec / s),但是,线程终止的控制有点棘手,所以我想改变代码运行使用task.wait()命令执行多任务。

但是当我运行此代码时,将覆盖变量的值。这样,我总是将文件的最后一行作为结果读取。如果我使用Thread类,这不会发生 - 但是当我使用Task类时,是的。 谁知道为什么?

1 个答案:

答案 0 :(得分:0)

在我看来,你最好打电话给Parallel.ForEach。这将自动处理您的并行性,并将固有地等待所有项目都被处理。我建议这样的事情:

Sub Main()
    Dim filePath As String 'Store file path here.
    Dim lines = File.ReadLines(filePath)

    'This will process the lines of the file in parallel.
    Parallel.ForEach(lines, AddressOf ProcessLine)

    'When you get here, all lines in the file have been processed.
End Sub

'Process one line of text.
Private Sub ProcessLine(line As String)
    '...
End Sub