処理するデータを持つリストがあります。そして、私は2つのスレッドを持っています、
UI スレッド : リスト アイテムを更新/追加します。
スレッド 1 : 項目がリストに追加されると、項目が 1 つずつ別のスレッド 2 に送信されます。
スレッド 2 : 機能し、それに応じてアイテムを更新します。作業が完了すると、リストをチェックし、対応するアイテムがまだリストに存在する場合、存在する場合はデータを処理します。
ウィンドウを閉じるときにUIスレッドから、UIから追加されたアイテムをマップから削除しています。スレッド 2 がリストから削除された項目に進まないようにします。
そして、UI destruct または、リストに追加されたアイテム インスタンスを削除しています。
問題は、スレッド 2 が既にアイテムを処理していることです。その間にウィンドウが閉じられ、デストラクタもスレッド 2 で処理中のアイテムを削除しました。
そのため、スレッド 2 によるデータの処理がクラッシュします。
私はMFCでこれを行いました。これら 2 つのスレッドを同期する方法 (UI の削除とスレッド 2)。MFC にはさまざまなスレッド同期方法があることは知っています。このシナリオに最適な方法はどれですか?