xtne6f / EDCB

BonDriver based multifunctional EPG software
Other
165 stars 37 forks source link

EpgTimerにファイル以外のものをドロップしたとき異常終了するのを修正 #34

Closed tkntrec closed 5 years ago

tkntrec commented 5 years ago

選択した文字列とかドロップできてしまっていました。 よろしくお願いします。

<追記> EpgTimer内部のテキストボックスなどからのドロップではクラッシュしますが、 外部からのドロップだとクラッシュまでは行かないようです。

xtne6f commented 5 years ago

マージ先をmisc-uiに変更できますか? 外部からだと例外がフレームワークで潰されるようで確かにクラッシュしないですね

tkntrec commented 5 years ago

変更しました。 リクエスト作成時にミスってたようです。

tkntrec commented 5 years ago

実はクラッシュするのはドロップ元みたいですね。 対策前後のEpgTimerを複数起動して、対策後の方から対策前にドロップすると、 対策後の方が落ちます。(逆は大丈夫)

なので、対策前のEpgTimerで自分にドロップしたとき落ちるのは、例外が潰された後、 送り側(これも自分)で問題を起こしてクラッシュしていた、ということになりますが、 これ、WPFのバグですかね。

xtne6f commented 5 years ago

ほんとだ…今回修正箇所自体は(デバッグビルドでなければ)常に例外が潰されるようで 2窓で確認すると、ドロップ先にこのバグがあると「ドロップ元が」落ちますね。 ドロップ元からみればD&Dのプロセス間通信が相手都合で中断するような形になる?と思うので そこの例外処理をWPFがさぼってるかもしれないです。まあ、バグに近いかも

tkntrec commented 5 years ago

Dispatcher.UnhandledException()とか使ってWPFの例外全部握り潰すのは‥ 止めた方がいいのでしょうね。メッセージ表示させて終了させるくらいか。

参考にドロップ元とドロップ先によって変わりますが、今回の件のエラーオブジェクト。 長い‥。<追記>イベントビューアで確認したら80行くらいありました。

err_wpf