2016-07-27 382 views
0

不斷的更新日期時間變量我試圖運行在用戶定義的時間了一段代碼,但日期時間變量存儲時間的價值時,我打運行,不更新檢查的時間發生了變化。在C#控制檯應用程序

static void Main(string[] args) 
     { 
      Console.WriteLine("please enter the date in m/d/y h/m/s am/pm  format "); 
      DateTime bombDate = Convert.ToDateTime(Console.ReadLine()); 
      repeat: 
      //DateTime bombDate = "7/27/2016 4:13:16 AM"; 

      DateTime now = DateTime.Now; 
       if (bombDate == now) 
       { 
        string _str = " this is a virus, you have been hit by a logic bomb ..."; 
        while (true) 
        { 
         foreach (char c in _str) 
         { 
          SendKeys.SendWait(c.ToString()); 
          Thread.Sleep(200); 


         } 
         Thread.Sleep(3000); 
        } 

       } 

       else { 
        goto repeat; 
       } 
+0

你的意思'now'? – user3185569

回答

0

你不能兩個日期完全一致,你在這裏比較蜱的機會兩個日期在同一時間執行準確Now比賽的日期是不高。既然你只輸入指定秒鐘,然後用這個:

if ((bombDate - now).TotalSeconds < 0) 

這即使是通過了長達小於1秒兩個日期相匹配。

或者,你可以檢查所需的時間已經過去了:

if ((bombDate <= now)) 
+0

感謝很多工程:)上 –

0

我會張貼此作爲一個評論,但我不能。

取決於你想要做什麼它可能是值得考慮寫程序,只需使用一個標準的設施,如Windows任務計劃程序實際上是在特定條件下/次運行它。

此外轉到被很多人是有充分理由的眉頭皺了起來的。基本上你正在創建一個循環。爲什麼不宣稱它是這樣的?一種可能性是使用一個只計算時間的循環(這基本上是你在外部循環中所做的)。

DateTime now = NULL; 
while(bombDate != now){ 
    now = DateTime.Now; 
} 
// Other Code beginning with string _str = 

在方式來規避計時問題將是您的初始分配後/循環之前添加其他的睡眠。這樣你就可以確定在DateTime.Now的連續調用之間經過了一段時間。像user3185569建議更高的分辨率可能會更好,但。

+0

非常感謝你的建議「轉到」我會記住這一點。 –