Windows (Win32、C/C++) で Scintilla エディット コントロールを使用しています。コントロールは WndProc で作成されます。Boost.Thread で作成された 2 番目のスレッドがあります。これはスペル チェッカーとして機能し、スペルが間違っている単語を赤い波線でマークします。したがって、Scintilla コントロールの内容を変更する 2 つのスレッドがあります。
最初は、テキストの編集中にプログラムがクラッシュしていました。そこで、スレッドセーフについて Scintilla を調査しました。情報はほとんど見つかりませんでしたが、ドキュメントでこの引用を取得することができました:
別のスレッドから Scintilla ウィンドウのネイティブ スレッドに対して直接呼び出しを実行すると問題が発生します。この場合、SendMessage(hSciWnd, SCI_*, wParam, lParam) を使用してウィンドウのスレッドと同期する必要があります。
もちろん、私は直接呼び出しを使用しているので、スペル チェック スレッド内のすべての呼び出しを SendMessage に変更すると、プログラムがクラッシュしなくなりました。最後に、それが問題です。私は問題を解決しましたか、それとも Scintilla とマルチスレッドで他の癖に遭遇するのでしょうか?