J'ai une ancienne application WinForms Mdi dans VB.Net 2.0 à laquelle j'ajoute des fonctionnalités. L'un des ajouts est un avertissement qui doit être déclenché lorsque l'heure actuelle s'approche d'une valeur spécifiée (une date limite). Mon intention est de vérifier l'heure une fois par heure jusqu'à ce qu'il y ait moins d'une heure avant la date limite, puis d'afficher des avertissements à des intervalles spécifiés jusqu'à ce que le temps soit écoulé.Quel .Net Timer() utiliser
L'utilisateur doit pouvoir continuer à utiliser l'application jusqu'à et même après la date limite, mais il doit être périodiquement informé de la proximité du délai.
L'application n'utilise pas System.Threading pour l'instant et ma connaissance est limitée pour le moment. Je sais qu'il ya 3 différentes méthodes disponibles (minuterie):
- System.Threading.Timer(),
- Windows.Forms.Timer() et
- System.Timers.Timer()
Ma question est la suivante: quelle est la meilleure façon de procéder? J'ai essayé d'utiliser la minuterie filetée, mais étant donné que WinForms n'est pas sûr pour les threads, j'ai eu une erreur d'exécution essayant d'accéder à une autre classe. Cela vaut-il la peine de sécuriser le thread de classe/formulaire? Suis-je complètement hors piste?
Merci.
Il est possible de faire de la programmation WinForms filetés, btw. Vous avez juste besoin d'attraper si un appel de méthode est fait dans le même thread qu'un formulaire, et si ce n'est pas le cas, envoyez-le au thread approprié. Cela semble plus difficile que ça ne l'est en réalité. –