テキストボックスのテキストをハイライト表示する関数を実行するには(=の左側は赤、=の右側は青)関数を実行する最も良い方法は何ですか?私はCommandTaskスレッドでデータを取得してから、FinishCommand(UIスレッド)で強調表示していたため、うまくいかなかったようですが、ハイライト表示を邪魔している間に少しUIがデッドロックされてしまいました。RichTextBox構文メインスレッドのベストプラクティスからハイライト表示されますか?
したがって、ハイライトコードを特殊なRichTextBox Invoke関数(したがってスレッドセーフ)に配置し、スレッド内で関数呼び出しを移動しようとしました。それも成功しましたが、何らかの理由で4〜8秒遅れていました。これはまったく同じコードなので、私には分かりません。
最後に、スレッド内にリッチテキストテンポラリを作成し、結果のテキストを貼り付けてハイライト表示を試みました。次に、Invoke関数はすべてRTFに沿って実際のRichTextBoxに渡されましたが、何らかの理由でRTFが正しくない場合、その色は毎回2ずつシフトします。例:R =赤、B =青、X =ブラック文字
線1 RRRRXBBBB(正しい)
ライン2 XXRRRRBBB(着色右に2シフト)
ライン3 XXXXRRRRXは(ように右に4シフト、および)
私の最も重要な質問は、どのアプローチが最も優れているのか、正確に同じコードをより遅くスレッドするのはなぜですか、アプローチ3が最善の場合、その奇妙な色シフト。ありがとう!
さて、3番目のケースはどうですか?スレッドはRTF文字列を返し、それをRichTextBoxに書き込みます。これはInvokeを必要としません(onFinishはUIスレッドで行われるため)。その場合でもまだ約3-6秒遅い(私はそのバグを修正し、/ r/nは1文字と見なされていたが、2バイトであるため、rtf文字列を投げ捨て、すべてを置き換えた/ r/nと/ r/rとその罰金) – Hershizer33
私は、あなたが私には見えないコードを推測するように頼んでいます。 RTFを再解析する必要があるため、RTFの大きな部分をポンピングするとRTBが遅くなることがあります。 –
良い点は、一緒にいくつかの関連するコードをスクロールし、ペーストビンそれ – Hershizer33