什麼是最好的方式讓以下成爲一個循環1小時,並有5分鐘的睡眠?我嘗試了一個使用秒錶的循環,但是在嘗試在調試中運行時導致錯誤。選擇合適的循環
string message = txtmessage.Text;
Clipboard.SetText(message);
SendKeys.SendWait("x");
SendKeys.SendWait("^v");
SendKeys.SendWait("{ENTER}");
什麼是最好的方式讓以下成爲一個循環1小時,並有5分鐘的睡眠?我嘗試了一個使用秒錶的循環,但是在嘗試在調試中運行時導致錯誤。選擇合適的循環
string message = txtmessage.Text;
Clipboard.SetText(message);
SendKeys.SendWait("x");
SendKeys.SendWait("^v");
SendKeys.SendWait("{ENTER}");
StopWatch沒有工作,因爲它是一種診斷措施。您可以使用DateTime對象來檢查TimeSpan以查看是否有1小時已經過去。 5分鐘的睡眠每隔1小時還是在兩者之間?
你可以這樣說:
var dateTime = DateTime.Now.AddMinutes(1);
Console.WriteLine($"It will stop at: {dateTime}");
var now = DateTime.Now;
while (dateTime.CompareTo(now) > 0)
{
//Do Job
now = DateTime.Now;
}
注意,這是我能想到的最簡單的方法。你可以改變它,讓它變得更好。
編輯: 此版本的代碼使用線程睡眠和計時器來執行您想要的工作。當你打電話給Thread.Sleep
時要非常小心,因爲如果你的應用程序進入睡眠應用程序的UI線程,你可以凍結你的應用程序。
Console.WriteLine($"Started at: {DateTime.Now}");
Timer timer = new Timer(TimeSpan.FromSeconds(5).TotalMilliseconds)
{AutoReset = true};
timer.Elapsed += (sender, args) =>
{
//Your code here.
};
timer.Start();
Thread.Sleep(TimeSpan.FromMinutes(1));
timer.Stop();
循環將運行1小時,但代碼只應在該1小時內每5分鐘執行一次。 –
任何人都知道這個錯誤是什麼? https://pastebin.com/84T3Z6UM 參照此:https://pastebin.com/BKPftni9 –
您的OnTimedEvent與我認爲的簽名不符。順便檢查我最新的編輯。我利用@Media關於計時器的說法。 –
也許是一個計時器?請注意,這種類型的代碼非常脆弱,可能不是您嘗試執行任何操作的正確方法。你想要做什麼? –
秒錶沒有工作,因爲它是一種診斷措施。您可以使用DateTime對象來檢查TimeSpan以查看是否有1小時已經過去。 5分鐘的睡眠每隔1小時還是在兩者之間? –
我需要程序做一些用戶會做的輸入。在遊戲中,它會按下'x'來打開聊天框,然後將一條消息粘貼到該消息中,用戶將其放入文本框'txtmessage'並點擊輸入。我發現它不止一次,我似乎無法在google上找到解決方案。 –