Je suis en train de développer une application et j'ai besoin d'obtenir la date actuelle d'un serveur (elle diffère de la date de la machine). Je reçois la date du serveur et avec un simple de Split créer un nouveau DateTime:inexact. Minuteur .NET?
globalVars.fec = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(infoHour[0]), int.Parse(infoHour[1]), int.Parse(infoHour[2]));
globalVars est une classe et fec est une variable statique publique pour que je puisse y accéder n'importe où dans l'application (mauvais codage Je connais...). Maintenant, j'ai besoin d'une minuterie qui vérifie si cette date est égale à certaines dates que j'ai stockées dans une liste et si elle est égale, je n'appelle qu'une fonction.
List<DateTime> fechas = new List<DateTime>();
Avant d'avoir à obtenir la date à partir d'un serveur que j'utilisais la date de l'ordinateur, afin de vérifier si les dates correspondent que j'utilisais ceci:
private void timerDatesMatch_Tick(object sender, EventArgs e)
{
DateTime tick = DateTime.Now;
foreach (DateTime dt in fechas)
{
if (dt == tick)
{
//blahblah
}
}
}
Maintenant, j'ai la date du serveur afin DateTime.Now ne peut pas être utilisé ici. Au lieu de cela, je l'ai créé une nouvelle minuterie avec intervalle = 1000 et sur tick J'ajoute 1 seconde à l'aide globalVars.fec:
globalVars.fec = globalVars.fec.AddSeconds(1);
Mais l'horloge n'est pas exacte et toutes les 30 minutes de l'horloge perd environ 30 secondes .
Existe-t-il une autre façon de faire ce que j'essaie de faire? J'ai pensé utiliser threading.timer à la place mais j'ai besoin d'avoir accès à d'autres threads et fonctions non statiques.
J'ai en fait le temps serveur, j'ai juste besoin de l'application pour utiliser cette heure du serveur et non celui de l'ordinateur – Ivan
C# n'a pas de minuteries. Le .NET Framework fait. –