序文:こんにちは、これはすべて私の最初の質問ですので、もし私がやったことや間違っていることを知らせてください。私はプロジェクトに取り組んでおり、その機能の1つは、データを処理し、特定の行の特定のテキストを置き換えて、richtextbox /ファイルに出力するための巨大なテキストを書き込むことです。Parallel Loop&Stringbuilder
問題:並列foreachを使用すると、richtextboxの結果がすべての場所にあることになります。行に沿ったものではありません(たとえば、並列foreachループの後に最初の行が15行目走る)。
コードが行うこと:リッチテキストボックスをループし、その行がテンポラリリッチテキストボックスの最初の行と一致するかどうかを確認します。追加するとテンポラリリッチテキストボックスからテキストをコピーし、過去のリッチテキストボックス内の行数と過去の行の量を加算してから、追加を続行します。それは基本的にテキストの置き換えです。合計出力私は約20Kラインを見ています。
Dim completertb4text As New StringBuilder("")
Parallel.ForEach(newrtb.Lines, Function() New StringBuilder(), Function(x, [option], sb)
If x.Contains(richtextboxl0) Then
startcount = True
sb.Append(vbNewLine & richtextbox3text & "111111")
End If
If startcount = True Then
If counter = temptextbox3count Then
startcount = False
Else
counter += 1
End If
End If
If sb.Length = 0 Then
sb.Append(vbNewLine & x & "222222")
End If
If sb.Length > 0 Then
sb.Append(vbNewLine & x & "3333333")
End If
Return sb
Function, Sub(sb)
SyncLock completertb4text
completertb4text.Append(sb.ToString())
End SyncLock
End Sub
ご協力いただきありがとうございます。
質問が正しく理解されているかどうかわかりません...あなたのコードは次のようになっています:1.リッチテキストボックスで内容を読む2. RTBのテキストがTextBoxにある場合は、 3.更新されたコンテンツを他のRTBに書き込む。右??? – A3006
はい、あなたは正しいです。 –
Parallel.ForEachを使用して、あなたが望むものを実現できるのではないかと心配しています。 – A3006