複数のオブジェクトを管理するDownloadManager
クラスがあります。DownloadItem
それぞれDownloadItem
に や のようなイベントがProgressChanged
ありDownloadCompleted
ます。通常、すべてのダウンロード アイテムに対して同じイベント ハンドラーを使用する必要があるため、各DownloadItem
.
したがって、使用するパターンを決定する必要があります。
1 つ
DownloadItem
をテンプレートとして使用し、必要に応じて複製しますvar dm = DownloadManager(); var di = DownloadItem(); di.ProgressChanged += new DownloadProgressChangedEventHandler(di_ProgressChanged); di.DownloadCompleted += new DownloadProgressChangedEventHandler(di_DownloadCompleted); DownloadItem newDi; newDi = di.Clone(); newDi.Uri = "http://google.com"; dm.Enqueue(newDi); newDi = di.Clone(); newDi.Uri = "http://yahoo.com"; dm.Enqueue(newDi);
代わりにイベント ハンドラを設定し、エンキュー
DownloadManager
されたそれぞれにイベントをコピーしますDownloadItem
。var dm = DownloadManager(); dm.ProgressChanged += new DownloadProgressChangedEventHandler(di_ProgressChanged); dm.DownloadCompleted += new DownloadProgressChangedEventHandler(di_DownloadCompleted); dm.Enqueue(new DownloadItem("http://google.com")); dm.Enqueue(new DownloadItem("http://yahoo.com"));
または、ある種の工場を使用します
var dm = DownloadManager(); var dif = DownloadItemFactory(); dif.ProgressChanged += new DownloadProgressChangedEventHandler(di_ProgressChanged); dif.DownloadCompleted += new DownloadProgressChangedEventHandler(di_DownloadCompleted); dm.Enqueue(dif.Create("http://google.com")); dm.Enqueue(dif.Create("http://yahoo.com"));
あなたは何をお勧めします?