2017-12-12 43 views
0

私はistructionのセットが20回繰り返され、次のコードを持っている:最適化ネットシーケンシャルコード

WebBrowserJobs wb1 = new WebBrowserJobs(); 
Uri uri1 = new Uri("https://www.site1.it");    
wb1.Url = uri1; 
wb1.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 

WebBrowserJobs wb2 = new WebBrowserJobs(); 
Uri uri2 = new Uri("https://www.site2.it");    
wb2.Url = uri2; 
wb2.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 

................... 
................... 
................... 

WebBrowserJobs wb20 = new WebBrowserJobs(); 
Uri uri20 = new Uri("https://www.site20.it");    
wb20.Url = uri20; 
wb20.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 

コードが正常に動作しますが、私はスクラップに新しいサイトを追加する必要がありますたびに、私がする必要があるがコードを編集してください...

URLのリストを含む文字列の単純なリストに基づいて、ある種の反復を作成することが可能かどうかは知りませんでした。

ライブラリをリファクタリングするとこの作業に役立つことがありますか?これは動作するはず

おかげ

+3

これは、えー、ちょっと基本的なプログラミングです。コードをメソッドに入れて繰り返し呼び出すと、ここで混乱しているのは何ですか? – DavidG

+0

探している制御機構を「ループ」といいます。あなたはC#の入門チュートリアルから始めるべきです。ループはそれらのいずれかによってカバーされる。 – David

答えて

4
var mySites = new []{"http://site1.com", "http://site2.com"}; 
foreach(var site in mySites) 
{ 
    WebBrowserJobs wb = new WebBrowserJobs { Url = new Uri(site) }; 
    wb.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 
} 

+2

これは、 'wb'が範囲外になっても何の問題も生じないと仮定しています。 – DavidG

+0

ありがとう、私は試してみてください – DarioN1

-3

試しましたか?

 foreach (var str in collection) 
     { 
      WebBrowserJobs wb1 = new WebBrowserJobs(); 
      Uri uri1 = new Uri(str); 
      wb1.Url = uri1; 
      wb1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 
     } 
+1

それはサイモンの答えの悪いバージョンのようです – Toshi

+0

@ラファエル質問に答えるつもりならば、完全に説明する必要があります。たとえば、ここで 'コレクション'とは何ですか?どのように設定しますか?あなたのコードは元のコードとは何をしていますか?何か問題はありますか? – DavidG

+0

@DavidG私はあなたのフィードバックのためにここに新しいです。 –

1

あなたのWebBrowserJobsオブジェクトがスコープ内に滞在し、ゴミが配置/収集されません、そして、あなたは、このような単純な何かができることを保証する必要がある場合。まず、あなたの仕事をセットアップする方法:

public WebBrowserJobs CreateBroswerJob(string url) 
{ 
    var wb = new WebBrowserJobs(); 
    wb.Url = new Uri(url); 
    wb.DocumentCompleted += 
     new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 

    return wb; 
} 

そして、あなたはこのようにそれを呼び出す:

//Your list of sites, add to this when necessary 
var urls = new List<string> 
{ 
    "https://www.site1.it", 
    "https://www.site2.it", 
    "https://www.site3.it" 
} 

var jobs = new List<WebBrowserJobs>(); 

foreach (var url in urls) 
{ 
    jobs.Add(CreateBroswerJob(url)); 
} 

今、あなたはあなたが照会することができ、ジョブオブジェクトのコレクションまたはループラウンドを持っているし、必要に応じて何かをします。

ボーナス:あなたは少しいくつかのLINQでforeachを簡素化することができます。

var jobs = urls 
    .Select(url => CreateBroswerJob(url)) 
    .ToList();