Existe-t-il un moyen simple de créer un transfert de priorité basse d'un fichier? J'ai beaucoup de fichiers sur mon serveur et parfois je transfère d'autres choses aussi. Existe-t-il un moyen facile de transférer mon application lentement lorsque mon réseau est occupé?transfert de fichier http de priorité faible?
1
A
Répondre
3
Découvrez BITS. Voici un exemple rapide à transférer en tant que faible priorité:
using (var done = new EventWaitHandle(false, EventResetMode.ManualReset))
{
var manager = new Manager();
var job = manager.CreateJob("Test Job Name");
var jobevents = new JobEvents();
job.AddFile(
@"F:\DEV\TestBITS\TestBITS\dotnetfx35.exe",
"http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe");
job.Priority = JobPriority.Low;
jobevents.JobTransferred += (sender, e) => { e.Job.Complete(); done.Set(); };
jobevents.JobError += (sender, e) => { e.Job.Cancel(); done.Set(); };
jobevents.AddJob(job);
job.ResumeJob();
done.WaitOne();
}
1
Utilisez WebClient.OpenRead
et ajoutez un peu de sommeil au milieu de la lecture de la réponse. Quelque chose le long de ces lignes:
using(var client = new WebClient())
using(var input = client.OpenRead("http://whatever.com/myfile.txt"))
using(var output = File.OpenWrite("c:/temp/myfile.txt"))
{
var length = long.Parse(client.ResponseHeaders["content-length"]);
var buffer = new byte[32768];
long totalRead = 0;
while(totalRead < length)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read != 0)
{
output.Write(buffer, 0, read);
totalRead += read;
}
Thread.Sleep(100); // This is what slows down the download, make number bigger to download slower
}
}
Questions connexes
- 1. Transfert de fichiers volumineux HTTP
- 2. Émettre des mises à jour de faible priorité
- 3. Déterminer si le thread courant est faible priorité d'E/S
- 4. transfert de http à https asp.net C#
- 5. Comparaison de HTTP et FTP pour le transfert de fichiers
- 6. transfert de fichier en flex
- 7. Alternative à Response.TransmitFile pour le transfert de fichiers via HTTP
- 8. Transfert de fichier à l'aide de WCF
- 9. Transfert fichier us NuSOAP
- 10. Un index Oracle peut-il être créé dans un thread/processus de priorité faible?
- 11. Codage de transfert en bloc HTTP et MFC
- 12. Transfert de données du serveur vers le navigateur via http
- 13. Transfert de fichiers dans FTP
- 14. Transfert de fichier machine à machine
- 15. transfert de sortie vers un nouveau fichier
- 16. transfert de fichier en utilisant RMI
- 17. Transfert de fichier d'application Web C#
- 18. Mysql instructions WHERE priorité lors de l'exécution
- 19. Options de transfert de fichier vers iPhone/iPad
- 20. Délai de transfert UART de transfert série
- 21. Cadre de lien faible
- 22. priorité de ligne MySQL
- 23. Problème de transfert de canal de fichier NIO sur iSeries
- 24. Niveau de priorité de thread
- 25. Comment puis-je optimiser ma sortie xml afin que le temps de transfert de données soit plus faible?
- 26. iPhone: crash de mémoire faible
- 27. Téléchargement de fichier HTTP standard?
- 28. Meilleure méthode de transfert de fichiers via http (s) en utilisant PHP (POST) invoqué via shell
- 29. Faible débit lors de l'utilisation de la commande à distance http C#
- 30. Eviter multipart/form-data pour le transfert de fichier
Qu'est-ce que vous utilisez pour transférer le fichier? scp? ftp? wget? Un autre outil? Remarque curl a une option --limit-rate, voir http://curl.haxx.se/docs/manpage.html – maxpolk
Cela vous aidera si vous pouvez ajouter du code pour la façon dont vous faites le transfert de fichiers maintenant. –
@sam: 'nouveau WebClient(). DownloadFile (url, fn);' @ ux9i: Ce n'est pas important pour moi ce que j'utilise. Peut-être que je vais lancer un processus de boucle –