WebRequest와 Streams를 통해 동시에 두 개의 파일을 다운로드하는 다운로더를 만들려고합니다.메서드 복사로 작업 시작
그리고 새로운 작업을 시작할 때 동일한 방법을 공유하고 있습니다.
두 파일을 다운로드 할 수 없게 만드는 이유는 새 작업이나 스레드를 만들어 메서드 복사본을 만들 수 있습니까?
내가 뭘하려 : 제론 반 Lagen가 언급 한 바와 같이
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