Molto strano, qui ho provato con limite a 10 e 10 download con il codice di prima da applicazione console sia col metodo sincrono multi thread sia col metodo asincrono, e partono i 10 download insieme.
Molto strano, qui ho provato con limite a 10 e 10 download con il codice di prima da applicazione console sia col metodo sincrono multi thread sia col metodo asincrono, e partono i 10 download insieme.
Daniele Iunco - GiDiNet - Registrazione domini | Wix.it Backorder domini
Non ne ho proprio idea.
Leggendo in giro sembra che le connessioni verso uno stesso host siano, di default, limitate a 2. Ed in effetti, quando partono molti download ne partono proprio due.
Dovrebbe bastare mettere questa configurazione:
ma ovviamente non viene presa in considerazione, perchè sempre 2 download partono.Codice:<configuration> <system.net> <connectionManagement> <add address="*" maxconnection="100" /> </connectionManagement> </system.net> </configuration>
EDIT:
però aspetta, nel tue codice c'è qualche cosa che non va.
Tu controlli solo che venga avviato il download, e questo lo fa anche a me, ma in realtà non scarica nulla. I 10 download partono, ma solo 1 o massimo 2 scaricano, gli altri sono in sospeso.
Puoi vedere se stanno scaricando collegandoti ad uno degli eventi come ho fatto io.
Ultima modifica di guest; 17-08-2010 alle 17:56
http://www.web4web.it - Low Cost Hosting
Tutti i pacchetti sono multidominio.
Database e domini illimitati a partire da €10
http://www.guest.it - Servizi professionali su misura.
Con la richiesta sincrona multi thread finito il download scrive completato, guardando le dimensioni dei file creati aumentano insieme.
Per quelle asincrone su singolo thread, a scrivere gli eventi in un'applicazione console si capisce poco, però le dimensioni dei file creati aumentano sempre insieme.
Codice:class Program { const string indirizzoDL = "http://prova/prova"; static void Main(string[] args) { System.Net.ServicePointManager.DefaultConnectionLimit = 10; Console.WriteLine("DefaultConnectionLimit: " + System.Net.ServicePointManager.DefaultConnectionLimit); for (int i = 1; i <= 10; i++) { myDL(i); } //ho scritto un'applicazione console, questo per evitare che termini do { System.Threading.Thread.Sleep(1000); } while (true); } static void myDL(int iCount) { try { System.Net.WebClient myWebClient = new System.Net.WebClient(); string myDest = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString()); Console.WriteLine(string.Format("{0:G} - {1} Iniziato", DateTime.Now, iCount)); myWebClient.DownloadFileCompleted += myWebClient_DownloadFileCompleted; myWebClient.DownloadProgressChanged += myWebClient_DownloadProgressChanged; // Metto il numero del download come parametro userToken myWebClient.DownloadFileAsync(new System.Uri(indirizzoDL), myDest, (object)iCount); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void myWebClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e) { // Riprendo il numero del download int iCount = (int)e.UserState; Console.WriteLine("{0}. Scaricati {1} / {2} bytes. {3} %", iCount.ToString(), e.BytesReceived, e.TotalBytesToReceive, e.ProgressPercentage); } private static void myWebClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { // Riprendo il numero del download int iCount = (int)e.UserState; Console.WriteLine("{0} Completato", iCount.ToString()); } }
Daniele Iunco - GiDiNet - Registrazione domini | Wix.it Backorder domini
Non so che dirti, a me non funziona. Più di 2 download non vanno.
Prova a fare una applicazione form e non console, non vorrei fosse quello il problema. Magari le applicazioni a form son soggette ad alcune limitazioni.
EDIT: ho fatto copia-incolla del tuo codice in una applicazione console.
Non va, parte il download 1 e il 9, nient'altro. Sempre 2 download vanno.
Ultima modifica di guest; 17-08-2010 alle 20:10
http://www.web4web.it - Low Cost Hosting
Tutti i pacchetti sono multidominio.
Database e domini illimitati a partire da €10
http://www.guest.it - Servizi professionali su misura.
Sig. Kaspersky Internet Security, sei un maledetto.
http://www.web4web.it - Low Cost Hosting
Tutti i pacchetti sono multidominio.
Database e domini illimitati a partire da €10
http://www.guest.it - Servizi professionali su misura.
Cioè il firewall di quel software ti bloccava le connessioni successive alla 2°?
Daniele Iunco - GiDiNet - Registrazione domini | Wix.it Backorder domini
Decisamente, maledetto firewall.
http://www.web4web.it - Low Cost Hosting
Tutti i pacchetti sono multidominio.
Database e domini illimitati a partire da €10
http://www.guest.it - Servizi professionali su misura.
Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)
Segnalibri