2012-09-27 4 views
1

함수가 있습니다. 여러 스레드에서이 함수를 여러 번 호출하려고합니다. 어떻게해야합니까? 내 기능은 다음과 같습니다.다른 스레드에서 함수 호출시 문제가 발생했습니다.

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

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

다운로드 할 이미지가 10 개 있습니다. 웹 클라이언트를 사용하여 이미지를 다운로드하고 있습니다. 그래서이 함수를 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(); 
     } 

도와주세요.

답변

2

당신은 작업 병렬 라이브러리 사용할 수 있습니다

public void DownloadImage(List<String> imageUrl) 
{ 
    Parallel.ForEach(imageUrl, url => StartDownload(url)); 
} 
관련 문제