微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

并行 ForEach 冻结最后一个元素

如何解决并行 ForEach 冻结最后一个元素

我使用 Parallel.ForEach 从字符串列表构建对象列表。这可以是 100000+ 个字符串。在构建最后几个对象之前,它可以快速而完美地工作。在 Parallel.ForEach 结束之前,循环冻结。当我为每个循环使用法线时,我没有这个问题。我也没有得到任何异常,我也没有遇到任何断点。

这是我的代码

Parallel.ForEach(files,Sub(currentFile As String)
                                    Try
                                        If Not currentFile.tochararray.First = "~" Then
                                            Dim baseFile As New BaseFile(currentFile,Path.GetDirectoryName(currentFile))
                                            If Not baseFile.SWDocMGrdocument.FileCorrupt Then
                                                retVal.Add(baseFile)
                                            Else
                                
                                                Debug.WriteLine($"Corrupt file {baseFile.FullFileName} skipped.")
                                            End If
                                            fileInfoWindow.Invoke(Sub()
                                                                      fileInfoWindow.SetFileName(currentFile)
                                                                  End Sub)
                                        End If
                                    Catch ex As Exception
                                        Debug.WriteLine($"Error: {ex.Message}")
                                    End Try
                                End Sub)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。