1

私には機能があります。この関数を異なるスレッドで数回呼び出したい。どうやってやるの ?。私の機能は以下です

public void DownloadImage(List<String> imageUrl)
    {
        imageCount = imageUrl.Count;

        foreach (string url in imageUrl)
        {
            StartDownload(url);
        }
    }

ダウンロードする画像が 10 枚あります。画像をダウンロードするために webclient を使用しています。この関数を 10 スレッドで呼び出したいと思います。どうやってやるの ?

以下のコードを試しました。しかし、それはコンパイルエラーを示しています

ParameterizedThreadStart starter;

        for (int i = 0; i < 10; i++)
        {
            _imageDownloader = new ImageDownloader(); //this is class where I defined the function above ie DownloadImage
            _imageDownloader.OnCompleted+=new Completed(_imageDownloader_OnCompleted);
            starter = new ParameterizedThreadStart(_imageDownloader.DownloadImage); // in this line it showing a compile error "No overload for 'DownloadImage' matches delegate 'System.Threading.ParameterizedThreadStart'"
            Thread imageThread = new Thread(starter);
            imageThread.Start();
        }

助けてください。

4

1 に答える 1

2

タスク並列ライブラリを使用できます。

public void DownloadImage(List<String> imageUrl)
{
    Parallel.ForEach(imageUrl, url => StartDownload(url));
}
于 2012-09-27T13:09:22.550 に答える