Comment gérer correctement les événements d'objets dans une collection? Exemple: J'ai un List<Ping>
qui pings de manière asynchrone un certain nombre de serveurs. Comment puis-je savoir si l'un des éléments de la liste a appelé l'événement PingCompleted? Que faire si j'ajoute/supprime des objets Ping?Gestion des événements d'objets dans les collections
1
A
Répondre
1
Collection est plutôt meilleure que la liste de l'héritage:
class PingCollection : Collection<Ping>
{
protected override void InsertItem(int index, Ping item)
{
ping.PingCompleted += PingCompleted
base.InsertItem(index, item);
}
private void PingCompleted(object sender, EventArgs e)
{
// do stuff
}
}
Et ne pas oublier de résilier votre abonnement à supprimer.
(Sous la direction de diriger la suggestion de Dan)
1
Vous devez définir le gestionnaire d'événements sur chaque instance Ping. Dans le gestionnaire d'événements, vous pouvez inspecter le paramètre source
pour identifier l'objet Ping qui a déclenché l'événement. N'oubliez pas de supprimer la référence du gestionnaire une fois que vous avez terminé d'utiliser l'objet pour aider le récupérateur de place à faire son travail.
Questions connexes
- 1. Java Gestion des exceptions dans les "événements"
- 2. Gestion des événements dans SPWebPartManager
- 3. Gestion des événements dans wxPython
- 4. Gestion des événements dans ASP.net
- 5. Gestion des événements iPhone
- 6. Gestion des événements Silverlight
- 7. Gestion des événements Flex
- 8. ActionListener Gestion des événements
- 9. javascript gestion des événements
- 10. Gestion des événements de souris dans javafx
- 11. Gestion des événements répétés dans un journal
- 12. Gestion des événements en C#
- 13. Gestion des événements simples dans MVVM
- 14. Gestion des événements ActiveX dans ax 2009
- 15. Retarder la gestion des événements dans Flash
- 16. Sous-vue Gestion des événements dans UITableViewCell
- 17. Gestion des événements de Login.Authenticate
- 18. Gestion des événements dans l'assemblage C#
- 19. Gestion des événements inter-navigateurs
- 20. Gestion des événements avec PowerShell?
- 21. Android: Gestion des événements dans le menu
- 22. Gestion des événements en Java
- 23. gestion des événements en C++
- 24. Powershell 2 gestion des événements
- 25. Gestion des événements Shake dans Android (1.5+?)
- 26. gestion des événements bubling dans jquery
- 27. Gestion des événements dans les fenêtres modales (Java swing)
- 28. Gestion des événements dans les sous-vues de UITableViewCell
- 29. Gestion des événements clés dans les services Windows C#
- 30. Flash: Distribution/gestion des événements
'Liste .Add' n'est pas virtuelle, de sorte que vous devriez écrire' new' au lieu de 'override'. Probablement mieux de maintenir un 'List ' en interne plutôt que d'en hériter, non? –
'Liste' les méthodes ne sont pas virtuelles. 'Collection ' est probablement ce que vous cherchez. –
Ani
@Dan, @Ani: Merci pour la correction. Mais malheureusement, 'Collection .Add()' n'est pas non plus virtuel mais devrait certainement l'être. Pendant ce temps, toutes les autres méthodes - sont. –
abatishchev