La limitation de bande passante en C#

Je suis en train d'élaborer un programme qui envoie en permanence un flux de données en arrière-plan et je veux permettre à l'utilisateur de fixer une limite de téléchargement limite.

J'ai lu sur le token bucket et seau percé alghorhithms, et apparemment celui-ci semble correspondre à la description car ce n'est pas une question de maximiser la bande passante du réseau, mais plutôt d'être la plus discrète possible.

Je suis cependant un peu des doutes sur comment je pourrais le mettre en œuvre. Une approche naturelle consiste à étendre la classe Stream abstraite pour faire simple, qui consiste à étendre le trafic, mais ne serait-ce pas exiger la participation des autres threads pour envoyer les données tout en recevant simultanément (seau percé)? Tous les conseils sur d'autres implémentations qui font la même serait appréciée.

Aussi, même si je peux modifier la quantité de données que le programme reçoit, quelle est la limitation de bande passante de travail à la C# niveau? L'ordinateur aura toujours recevoir les données et il suffit de le sauvegarder, de manière efficace de l'annulation de la limitation de l'effet ou cela est-il attendre jusqu'à ce que je demande à recevoir de plus?

EDIT: je suis intéressé par la limitation des données entrantes et sortantes, où je n'ai pas de contrôle sur l'extrémité opposée de la rivière.

InformationsquelleAutor Christian P. | 2008-12-16