問題 §
Visual StudioでUWPのプロジェクトを作成し、最小ターゲットをBuild16299に指定したとき、不可視のImage要素があるとWin32 Exceptionを発生させる場合がある。(常時ではない)
16000x16000の巨大JPEGファイルを指定した時に発生したが、それが条件であるか否かな分からない。
原因 §
不明 (レポート済み)
解決 §
解決方法は不明。
回避方法として考えられるものは以下の通り。
- 最小ターゲットをBuild16299よりも低いビルドに設定する
- Image要素を不可視に設定しない
- Image要素に巨大サイズの画像ファイルを指定しない
- Image要素を不可視に設定する前にSource属性の値をクリアしておく (どうせ見えない状態なので、画像データを取り除いても見た目は大差ない)
感想 §
「全く原因が分からず、特定するまで丸一日以上掛かったよ」
「Win32 Exceptionをデバッガにアタッチすれば何となく原因が見えてこないのか?」
「出来なかったんだよ」
「なぜだよ」
「Visual Studioではキャッチできなかったが、新しいデバッガアタッチしようとすると【そのプロセスはデバッガにアタッチ済み】になってな」
「Visual Studioからデタッチしろよ」
「したらVisual Studioが固まって動かなくなってな」
「じゃあVisual Studio外から実行して後からアタッチしろよ」
「そうすると、何も言わないで実行ファイルが落ちてしまうんだ」
追記 §
「レポートしたら一瞬でトリアージされちゃったので、当面は直らないな、これは」
「どうするんだよ」
「回避策はいろいろあるし、それがダメでも滅多に使用されないサイズだから、制限事項として扱うしかなかろう」
「Mega Picturesで遭遇した問題だろ? どう直すつもりだよ」
「ああ。その件か。実は、そのImage要素の初期値指定はそもそも不要だったという結果になったので、巨大画像の指定を除去した」
「最初にコードを書いた時の試行錯誤の残りカスか」