2010-07-23 7 views
1

J'ai écrit fenêtres ONW service..in que j'ai logique qui est une partie du besoin d'exécuter le code sur certains temps .. mon service est en cours d'exécution dans tous min ..service Windows

par exemple

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then 

    'execute this logic 

End If 

Mais prob face iam qu'il envisage secondes lors de l'exécution ne peut donc pas comparer le temps ... au-dessus

Demandez-vous de suggérer une autre façon ..

+1

Vous avez une faute de frappe: il y a un espace dans la deuxième chaîne. Cela ne se comparera jamais vrai. Sinon, votre logique semble correcte. –

Répondre

3

Je suppose que vous exécutez dans une boucle et en comparant avec l'heure actuelle - c'est une attente occupée et pas la manière recommandée d'exécuter le travail chronométré.

Utilisez une minuterie dans votre service et réglez l'intervalle sur 60000 millisecondes. Placez le code qui doit être exécuté dans l'événement tick.

Voir l'article this sur les différentes classes de temporisation dans .NET.

+0

même chose que j'ai fait .. mais toujours face au problème ci-dessus .. –

+0

@ amitpatil200 - vous avez un espace supplémentaire dans la chaîne que vous comparez. Est-ce intentionnel? Vous n'utilisez pas non plus l'opérateur de comparaison ('=='), mais un seul '='. – Oded

+0

dans VB vous utilisez seulement un =. :) –

0

Est-ce que cela pourrait résoudre votre problème?

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") = "7/23/2010 1:10:00") Then 

    'execute this logic 

End If 
3
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0); 
DateTime now = DateTime.Now; 
if(now >= checkTime && now < checkTime.AddSeconds(60)) 
{ ... } 

Essayez d'éviter d'utiliser ToString comme ce type de comparission vous pouvez comparer datetimes explicitement

1
DateTime target = DateTime.Parse("7/23/2010 1:10"); 
if (DateTime.Now >= target) { ... } 

Ainsi, votre code exécutera cycle suivant après le temps cible (bien sûr, vous avez besoin pour s'assurer qu'il fonctionne exactement une fois, si c'est ce dont vous avez besoin).

0

je l'ai fait ce type de codage en C# dans mon service laissez-moi vous montrer le code où je compare le temps

string SetTime = Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm"); 
      int t1 = Int32.Parse(SetTime.Replace(":", "")); 
      int t2 = Int32.Parse(DateTime.Now.ToString("HH:mm").Replace(":", "")); 

if (Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm") == DateTime.Now.ToString("HH:mm") || t2 > t1) 
      {your custom code} 

espoir cela résout votre problème car il travaille très bien pour moi. ce que le code fait pour moi, c'est qu'il prend la sauvegarde de la base de données à un moment précis.