Ticket #39722

macOS版 エラーダイアログをメインスレッドで表示

Eröffnet am: 2019-11-04 21:58 Letztes Update: 2019-11-07 01:30

Auswertung:
Verantwortlicher:
Typ:
Status:
Geschlossen
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine

Details

サブスレッド上でエラーダイアログ表示処理 YNErrCtrl::showErr を呼び出した時、 サブスレッド上で直接ダイアログ表示処理(NSAlertクラスのrunModalメソッド)を呼び出していた。

サブスレッド上でrunModalメソッドを呼び出すと、例外で落ちてしまう。 runModalメソッドは、必ずメインスレッドから呼び出さなければならない。

Ticket-Verlauf (3/3 Historien)

2019-11-04 21:58 Aktualisiert von: yknk
  • New Ticket "macOS版 エラーダイアログをメインスレッドで表示" created
2019-11-04 21:59 Aktualisiert von: yknk
Kommentar

対策

YNErrCtrl::showErr

メインスレッドから呼び出された場合は、従来通りのエラーダイアログ表示を行う。

サブスレッドから呼び出された場合は、メインスレッドで非同期にエラーダイアログ表示を行うように修正する。

サブスレッドはエラー表示処理をメインスレッドに依頼した後で、ダイアログの消去を待たずに処理を進めることになるため、 再びサブスレッドでエラー表示処理を実行する可能性がある。 このためグローバル変数にエラーダイアログ表示中のステータスを保持し、ダイアログ表示中に サブスレッドでエラーダイアログの表示処理が呼び出された時は、何もせずに終了し、 スレッドで保持しているエラー情報をクリアする。

2019-11-07 01:30 Aktualisiert von: yknk
  • Status Update from Offen to Geschlossen
  • Lösung Update from Keine to Gefixt

Dateianhangliste

Keine Anhänge

Bearbeiten

Please login to add comment to this ticket » Anmelden