Top  上へ  目次



Ver.4系のβ版(?)Ver.4.60Ver.4.70(中編)



 まぢすみません、まさかの3部構成になっちゃいました。
 前回からの話の続きで「1個のタブが固まっても他のタブに影響を及ぼさないようになれば、かなり幸せだなプロジェクト」の一環です。

 今回は「開く」なり「ジャンプ」なりのアクションの際に、対象がアクセス不能であった場合に発生する遅延の「隠蔽」です。
 前回のように「解消」ではありません。
 あくまで錯覚を起こさせるためのバックグラウンド処理です。


 すごく雑な表現をしちゃうと「テキスト文字列のフルパス表記」から「ITEMIDLIST」に変換する際に、スンゲェ遅いものがたくさんあります。
 前回手を入れた「切断されたネットワーク先」は飛びぬけてダメな子でしたが、やたらと応答の遅い仮想フォルダー(リムーバブルメディア、マイネットワーク、検索結果など)が今回の対象になります。

 ちなみにXP時代には、そこそこの速度で応答が返ってきており、XPでは必要が無かったわけで、これもXPサポート終了計画の一環です。
 なんか同じ内容を繰り返し書いてますが、問題の本質はVista/7/8/8.1がクソOSなんだと思います。
 多分、メジャーOS番号が7になったら、似たようなドツボが待ってるんだろうな・・・という予感がヒシヒシとしますがね・・・。
 なんとなーく、ファイラーの存在が許されない世界がチラホラ見えてますし。


 で、愚痴っててもしょうがないので方法を考えます。
 ざくっりと乱暴に手順を表現をすると、リストの走査スレッドに「このパス開いてね」って渡す時に、ITEMIDLISTではなくフルパス文字列を渡しちゃいます。
 で、走査スレッドの中でITEMIDLISTに変換しちゃえば、他のタブに影響されず動作する・・・というカラクリです。
 まぁ、一覧の作成処理が成功するか失敗するか分からんけど、とりあえずスレッド作って放り込んじゃえという発想ですね。



 さて影響範囲なんですが、ユーザーが手入力って、入力間違えをすることが大前提になるわけですよ。
 つまり、現在のパスが不明という状態が頻繁に起こるわけですね。
 そして内部的には「フルパス文字列」って、一覧生成どころかファイル操作でも使用していません。
 ほとんど、このITEMIDLISTというブラックボックスを用いるように作られています。
 つまり、スレッドに丸投げされてるので、自分の親フォルダが何なのか?取得できるかどうかすら判定不能な場合もあるのですから、異常判定の処理を片っ端から見直す必要があるわけですよ・・・被害甚大です。あうあう。


 ・・・しかしまぁ、最初からXPの対応は諦め半分でしたが、結構できちゃうもんですね。ちょっとびっくりしました。
 まぁ誰も動作保証してくれないものを、私が動作保証しなければならないというのは辛いですけどね。

 というわけでキリが良いので、ここで一旦切り上げるつもりでした。
 しかし「開く」「移動」の次は、当然「閉じる」「中断」の改善をしないと粗が目立って仕方ありません。
 というわけで、今しばらく気長にお付き合いください。