human
Comment puis-je ajouter un délai à un programme en C#
gpt
Utilisez un minuteur avec un intervalle réglé sur 2 à 3 secondes.
Vous avez trois options différentes à choisir, en fonction du type d'application que vous écrivez :

* ```System.Timers.Timer```
* ```System.Windows.Forms.Timer```
* ```System.Threading.Timer```

N'utilisez pas ```Thread.Sleep``` si votre application a besoin de traiter des entrées sur ce thread en même temps (WinForms, WPF), car ```Sleep``` bloquera complètement le thread et l'empêchera de traiter d'autres messages. En supposant une application à un seul thread (comme la plupart le sont), toute votre application cessera de répondre, plutôt que de simplement retarder une opération comme vous l'aviez probablement prévu. Notez qu'il peut être acceptable d'utiliser Sleep dans une application console pure car il n'y a pas d'"événements" à gérer ou sur un thread séparé (```Task.Delay``` est également une meilleure option).
En plus des minuteurs et de ```Sleep```, vous pouvez utiliser ```Task.Delay```, qui est une version asynchrone de ```Sleep``` qui ne bloque pas le thread lors du traitement des événements (si utilisé correctement - ne le transformez pas en un sommeil infini avec ```.Wait()```). 
``` public async void ClickHandler(...)
 {
      // tout ce que vous devez faire avant le délai se trouve ici
      await Task.Delay(2000);
      // tout ce que vous devez faire après le délai.
 }
```
Le même ```await Task.Delay(2000)``` peut être utilisé dans une méthode ```Main``` d'une application console si vous utilisez C# 7.1 (Async main sur les blogs MSDN).
Remarque : retarder une opération avec ```Sleep``` présente l'avantage d'éviter les conditions de concurrence qui peuvent survenir lorsque plusieurs opérations sont potentiellement lancées avec des minuteurs/```Delay```. Malheureusement, bloquer une application basée sur une interface utilisateur n'est pas acceptable, vous devez donc réfléchir à ce qui se passera si vous démarrez plusieurs délais (par exemple, si cela est déclenché par un clic sur un bouton) - envisagez de désactiver ce bouton, d'annuler le minuteur/la tâche ou de vous assurer que l'opération retardée peut être effectuée plusieurs fois en toute sécurité.