Webclient downloadfileasync를 통해 380 개 사이트에서 데이터를 샘플링하는 C# 응용 프로그램을 상속 받았습니다. 각 사이트마다 별도의 스레드가 생성됩니다! (다운로드마다 다음 데이터를 다운로드하기 전에 타임 아웃 기간이 있기 때문에로드가 일정하지는 않지만 여전히 그렇습니다!) 어쨌든 다음 해 정도 사이트 수가 증가 할 것이므로 이를 사이트의 하위 집합에 대해 Webclient downloadfileasync 호출을 많이하는 작업자 스레드 몇 개 (적당한 수)로 변경합니다. 그러나 여러 다운로드가 동시에 완료되면 어떻게 될지 잘 모르겠습니다. downloadfilecompleted 이벤트 핸들러가 webclient에 의해 직렬화됩니까? 또는 여러 웹 클라이언트 완료가 "동시에"(또는 더 많은 경우 인터리브 됨) 발생할 수 있습니까? 한 완료가 다른 것을 완수 할 위험이 있습니까? 아니면 누군가가 현재 구현에서 스레드의 폭발을 관리하는 방법에 대한 더 나은 제안을 가지고 있습니까?C# webclient async
미리 감사드립니다.
어떤 프레임 워크 버전을 사용하고 있습니까? – CodingGorilla
DownloadFileAsync를 사용하고 있다면 이미 자체 스레드에 있습니다. 그래서 또 다른 스레드의 사용은 일종의 무의미하고별로 효과적이지 않습니다. –
Jon Skeet이 말했듯이 비동기 작업의 특징은 스레드 차단을 방지합니다. 아마도 [이 카운터] (http://technet.microsoft.com/en-us/library/cc768048.aspx) 중 일부를 사용하여 성능 모니터에서 응용 프로그램의 기본 프로필을 수행하여 추가 사이트를 비교할 수 있습니다 귀하의 응용 프로그램 프로세스가 수행 할 것입니다. 또한 최적화를 수행해야하는 경우 시작할 수있는 좋은 기회를 제공합니다. –