J'ai utilisé un ex de stackoverflow mais parfois mon timer se déclenche deux fois: cette horloge devrait se déclencher toutes les minutes, mais supposons qu'elle se déclenche 00: 00: 59.666 puis step1 = 59; étape2 = 59; étape3 = 1; return (1000-666); donc il devrait tirer pas la minute suivante mais prochaine 333 mili seconde, que puis-je faire?Timer Tirer deux fois
public int SyncTime = 60;
Clock = new System.Timers.Timer {AutoReset = false};
Clock.Elapsed += DoJob;
Clock.Interval = GetSync(SyncTime);
Clock.Start()
private void DoJob(object sender, ElapsedEventArgs elapsedEventArgs)
{
Clock.Interval = GetSync(SyncTime);
Clock.Start();
}
private static double GetSync(int syncTime)
{
DateTime now = DateTime.Now;
int step1 = (now.Minute * 60 + now.Second); //amount of miliseconds in this hour
int step2 = step1 % syncTime; //amount of miliseconds since last update
int step3 = syncTime - step2; //amount of miliseconds to next upadte
return (step3 * 1000 - now.Millisecond);
}
Votre code est incomplet ... vous semblez avoir des énoncés au milieu de nulle part, sans aucun point-virgule après l'un d'entre eux. Si vous pouviez créer un programme court mais complet qui démontre le problème, vous auriez beaucoup plus de chances d'obtenir une réponse. –
En outre, à quelle heure synchronisez-vous? Et pourquoi? –
cela est complet, j'ai même donné ex comment ce plaisir peut retourner une valeur erronée, je cherche la réponse – kosnkov