Dans une fenêtre Windows Form, plusieurs événements peuvent déclencher une méthode asynchrone. Cette méthode télécharge un fichier et le met en cache. Mon problème est que je veux que cette méthode soit exécutée une fois. En d'autres termes, je veux empêcher le téléchargement du fichier plusieurs fois.Multithreading et concurence avec C#
Si la méthode de téléchargement du fichier est déclenchée deux fois, je souhaite que le second appel attende le fichier (ou attende que la première méthode soit terminée).
Est-ce que quelqu'un a une idée sur la façon d'y parvenir?
MISE À JOUR: J'essaie simplement d'empêcher les téléchargements inutiles. Dans mon cas, lorsqu'un client place sa souris sur un élément dans un ListBox pendant plus de quelques millisecondes, nous commençons à télécharger. Nous faisons l'hypothèse que l'utilisateur cliquera et demandera le fichier. Ce qui peut arriver, c'est que l'utilisateur garde sa souris sur l'élément pendant une seconde puis clique. Dans ce cas, deux téléchargements commencent. Je suis à la recherche de la meilleure façon de gérer un tel scénario.
MISE À JOUR 2:: Il est possible que l'utilisateur déplace sa souris sur plusieurs éléments. En conséquence, plusieurs téléchargements se produiront. Je n'ai pas vraiment de problème avec ce scénario, mais maintenant, si nous sommes confrontés à un tel scénario, nous n'abandonnons pas le téléchargement. Le fichier sera téléchargé (les fichiers sont généralement environ 50-100kb) et seront ensuite mis en cache.
Si vous pouvez redresser certaines de mes hypothèses (ci-dessous), je peux mettre à jour ma réponse avec du code. –
Plus de détails aideraient. Essayez-vous de vous assurer que la bande passante n'est pas divisée entre deux téléchargements concurrents ou évitez les téléchargements inutiles de la même ressource? – AnthonyWJones
Pouvez-vous télécharger plusieurs fichiers à la fois? S'ils changent d'avis avant la fin du téléchargement, abandonnez-vous le premier téléchargement et en commencez un autre? –