2011-08-15 5 views
1

다운로드 할 파일 목록이 포함 된 목록과 파일 URL 이름을 가져 와서 다운로드하는 함수가 있다고 가정 해 보겠습니다. 최대 4 개의 병렬 다운로드를 다운로드하고 싶습니다.제한된 수의 여러 스레드에서 함수 실행

 Parallel.ForEach 
     (
     Result, 
     new ParallelOptions { MaxDegreeOfParallelism = 4 },     
     file => DownloadSingleFile(file) 
     ); 

하지만이 방법을 사용하지 않으려면 어떻게해야할까요? 당신의 아이디어에서 가장 좋은 것은 무엇입니까?

감사합니다.

+1

왜 당신이 "완벽한 솔루션"을 사용하고 싶지 않아요? – LukeH

+0

난 그냥 궁금해서 ... : D –

답변

3

어떻게 좋은 구식이 같은 Thread에 대한 :

for(int i = 0; i < numThreads; i++) 
{ 
    Thread t = new Thread(()=> 
    { 
     try 
     { 
      while(working) 
      { 
       file = DownloadSingleFile(blockingFileQueue.Dequeue()); 
      } 
     } 
     catch(InterruptException) 
     { 
      // eat the exception and exit the thread 
     } 
    }); 
    t.IsBackground = true; 
    t.Start(); 
} 
+0

당신의 대답에 대해 몇 가지 멋진 것들이 있습니다. 그것의 조금 "구식"이지만, 나는 그것의 멋진 생각하고 약간 비틀기와 완벽하게 될거야. –

0

4 개의 작업 항목을 추가하기 위해 4 개의 스레드를 시작하거나 ThreadPool을 사용할 수 있습니다.

관련 문제