次に呼び出し側。フォームのロードイベントにListBoxExにrowを追加する処理を実装します。
ListBoxExRowPictureとPictureInfoを20個作って、Dictionaryで管理します。これはダウンロードが完了したらどのrowの画像を更新すれば良いかを検索する為。
public partial class Form1 : Form { // 〜省略〜 Dictionary<PictureInfo, ListBoxExRow> list = new Dictionary<PictureInfo, ListBoxExRow>(); private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 20; i++) { ListBoxExRow row = new ListBoxExRowPicture("テスト画像"); listBoxEx1.AddItem(row); PictureInfo info = new PictureInfo("テスト画像", "http://image.rakuten.co.jp/diet/cabinet/c/18119-main02.jpg"); list.Add(info, row); DownLoadPictureThread thread = new DownLoadPictureThread(info); thread.DownloadComplate += new EventHandler(thread_DownloadComplate); thread.Start(); } }
1行追加する度にスレッドを起して、画像のダウンロードを開始しています。ダウンロードが完了したらthread_DownloadComplateメソッドに通知が行きます。