スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

最近のネットワークの調整

最近、X-FinderとTablacus Explorerで行ったネットワーク関連の調整はネットワークパスを開こうとした際に間違ったサーバー名だったりして問題がある場合、しばらく「応答なし」になって固まってしまう問題を対策していました。

例えば、X-Finder 11-12でアドレスバーに「\\unknown\hoge」と入力したらしばらく固まってしまっていました。

固まるのは、パスからアイテムIDリストというWindowsの仮想フォルダを扱う物に変換する箇所だと判った時に変換をバックグラウンドスレッドで行って、メインスレッドではメッセージ処理を行いながら変換を待つということもやってみたこともあったのですが、今ひとつ効果がありませんでした。

今回はバックグラウンドスレッドで変換を行ってアイテムIDリストが取得できたら、メインスレッドにその後の処理を投げるといった感じの処理を行ったらよい感じにできました。

詳しくはTablacus Exploerのソースをご覧ください。

static void threadParseDisplayName(void *args)がバックグラウンドの処理で
VOID CALLBACK teTimerProcParse(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)がアイテムIDリストを取得した後の処理になります。
Tablacus Explorerではメインスレッドに投げるのにSetTimerを使っていますが、X-FinderではSynchronizeメソッドを使用しています。

今まで、なんでこの方法を思いつかなかったのかと思いながら、他のファイラーをダウンロードしてきてアドレスバーに「\\unknown\hoge」と入力したら、しばらく固まるの物がほとんどだったのでちょっとホッとしてしまいました。

こちらの環境のWindows 7(x64)ではAs/R 3.4.0.92(x64)、CubicExplorer 0.95.1、Explorer++ 1.3.5.531(x64)、NobleBullet 1.4.0(x64)、Q-Dir 5.72(x64)が固まりました。PPx 1.33(x64)は即エラーが表示されて後から詳しいエラーが表示されました。なにげにエクスプローラも固まりません。

それにしても、PPxの即エラーは凄いな。
スポンサーサイト
 

コメント

コメントの投稿

  • URL
  • コメント内容
  • password
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL: http://gakana.blog34.fc2.com/tb.php/60-c8ab2424
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。