Que se passe-t-il si une timer ne peut pas terminer tous ses travaux avant l’arrivée du nouveau cycle?

Supposons que nous ayons une timer qui fonctionne toutes les 10 minutes. Que faire si le cycle de son traitement prend plus de 10 minutes. Est-ce qu’un nouveau thread commence pour ça? Va-t-il interrompre son fonctionnement actuel? Que se passe-t-il si un seul object est muté dans le minuteur?

Désolé si je ne mentionne pas de code pour cela car le problème est clair et que je veux connaître la réponse complète du sharepoint vue d’un connaisseur de programmation multithread plutôt que de trouver une réponse en essayant de la tester via un exemple d’application. En fait, je veux connaître la logique de son mécanisme de travail.

Placez votre code dans un Monitor.TryEnter()

 object timeCheck= new object(); void Timer() { Monitor.TryEnter(timeCheck) { //Code that might take too long //... Monitor.Exit(); } } 

pour éviter la réentrance, vous pouvez utiliser un booléen statique qui indique si la fonction est déjà exécutée. Utilisez un try / Catch / finally et définissez ce booléen sur false pour vous assurer que le booléen ne rest pas faux si vous avez commis une erreur dans le code ou si le code a échoué.
Pour un temporisateur plus rapide, la réentrance doit être évitée en utilisant un sémaphore (mutex).