2017-09-30 5 views
0

私は数ヶ月以来コードを覚えています。 今日、私はパスワードマネージャをコーディングしたいと思います。すべて正常に動作しますが、ホストに到達できない場合、アイコンの取得機能に問題があります。この機能は、ウェブページからファビコンを取得することです。WebException - 各ループのブロック

  Try 

      For Each myItem As ListViewItem In lv_data.Items 

       Dim baseurl = myItem.Text 
       Dim url As Uri = New Uri(baseurl) 

       If url.HostNameType = UriHostNameType.Dns Then 
        Dim iconURL = "http://" & url.Host & "/favicon.ico" 

        Dim request As System.Net.WebRequest = System.Net.HttpWebRequest.Create(iconURL) 
        Dim response As System.Net.HttpWebResponse = request.GetResponse() 
        Dim stream As System.IO.Stream = response.GetResponseStream() 
        imglist.Images.Add(Image.FromStream(stream)) 
        lv_data.Items.Item(myItem.Index).ImageIndex = myItem.Index 
       End If 

      Next 
     Catch ex As WebException 

     End Try 

一部のサーバーは例外で応答:

リモートホストが

を解決できませんでした。 これが起こると、各ループの全体が停止します。私は、そのエラーを無視し、リストビューの次の項目に進む方法を探しています。

誰でも私にチップや解決策を教えてくれますか?

敬具、 デアキング

+1

(あなたはこのコンテキストで直接MYITEMを使用できることに注意してください)ImageList.Images.Countプロパティ(1以下)

imglist.Images.Add(Image.FromStream(stream)) myItem.ImageIndex = imgList.Images.Count - 1 

を使用することができますあなたは次の繰り返しを続けることができる例外を取得します。 – Steve

+0

これでループが進行しています。しかし今、アイコンは適切な場所にありません。私は、サーバが到達不能なときに、次の稼働中のサーバからアイコンを取得しているときにこれが起こると思います。 –

答えて

0

まずこれは、それがファビコンを取得中に例外が発生したときに、あなたのコードは、foreachループ内で継続することができますループ内

For Each myItem As ListViewItem In lv_data.Items 
    Try 

     Dim baseurl = myItem.Text 
     Dim url As Uri = New Uri(baseurl) 
     ... 
    Catch 
    End Try 
Next 

をトライキャッチを移動します。 ico

次の問題は、イメージリストのイメージのアドレス指定方法です。コードでファビコンを取得できないために例外が発生した場合は、ImageListに何も追加しません。
ImageListとListView.Itemsに同じ数の要素が含まれていないため、myItem.Indexを使用してImageList内のイメージを参照することはできません。

しかし、画像が前の行のImageListに追加されただけなので、必要な画像がImageListの最後の要素であることが確実です。だから、あなたはforeachの中にあなたのtry/catchを移動する場合は、次のときに....

+0

ありがとうございました。できます。スピードが本当に遅いと言うのは間違いです。約120項目のリストビューは、アイコンをロードするのに最大4分かかります。しかし、私は、Web要求と例外の問題を認識しています。 –

+0

はい、例外は、必要なすべての情報(スタックトレースなど)を処理するのに多くの時間がかかります。 – Steve

関連する問題