Je suis en train d'implémenter un timeout sur une opération asynchrone (une série d'E/S réseau), et je ne suis pas sûr de ce qui est "meilleur" (du point de vue allocation/performance): créer un EventWaitHandle et en utilisant RegisterWaitForSingleObject, ou simplement en créant un temporisateur et en utilisant son Tick.Temporisations .Net: WaitForSingleObject vs Timer
Dans mon cas spécifique, EventWaitHandle est créé paresseusement, mais il est évident qu'il doit être instancié pour utiliser WaitForSingleObject. Donc, c'est vraiment une question sur le coût des ressources d'un WaitHandle + WaitForSingleObject vs un minuteur. Les deux approches sont à peu près aussi faciles à mettre en œuvre.
J'ai implémenté les deux à différents moments, donc je comprends le terrain, je ne suis pas sûr de l'approche qui est 'meilleure'.
Son article de blog est un bonne comparaison des usages, mais n'est pas une recommandation très forte de favoriser l'un contre l'autre. Et plus j'y pensais, plus je ne voyais aucune différence en termes de transitions du noyau et ainsi de suite. J'aimerais toujours savoir s'il y avait une différence de coût par rapport à l'API Win32 sous-jacente, mais le poids de l'implémentation de .net semble être la meilleure réponse que j'ai trouvée. – piers7