私は、WebRequestとStreamsで同時に2つのファイルをダウンロードするダウンローダを作ろうとしています。メソッドのコピーで作業を開始する
私は新しいタスクを開始するとき、同じ方法を共有しています。
これは2つのファイルのダウンロードを不可能にします。メソッドのコピーを作成するために新しいタスクまたはスレッドを作成する方法はありますか?
for (int i = 0; i < dataGridView.RowCount; i++) //
{
for (m_ThreadIndex = 0; m_ThreadIndex < 2; m_ThreadIndex++)
{
m_Downloader.DownloadProgressChanged += DownloadProgressChanged;
m_Downloader.DownloadCompleted += DownloadCompleted;
var i1 = i;
Task.Factory.StartNew(() => m_Downloader.Start(i1));
i++;
}
Task.WaitAll();
}
複数のタスクで同じ方法を実行できます。各スレッドには独自のスタックメモリがあるため、すべてのローカル変数などは共有されません。メソッドの「コピー」はできません。索引の代わりに各タスクのデータを渡す必要があります。彼らは同じフィールド/プロパティデータを使うべきではありません。複数のDownloaderクラスインスタンスを作成する必要があります。 –
'm_Downloader'は' BackgroundWorkerThread'ですか? –
@JeroenvanLangenそれは、あなたが言ったことの半分を理解するためにこれを深く考えているようですが、インデックスは行のみを示すことです、BackGroundWorkerThreadについては、そうは思わないでしょう。 – Dannz