2017-10-09 86 views
-1

我在這裏有一個有趣的情況。語言是C#,使用Visual Studio。C#循環單向函數

我有一個函數循環會持續運行。

當某個事件觸發時,我想要使用IF語句調用一個函數。

有沒有辦法讓我的這個功能在一定的延時下不能再被調用?

例如,函數A被調用....函數A不能在接下來的20秒內被調用。

20秒後,如果IF語句存在,函數A可以再次調用。

我有一個功能是發短信給我的手機,目前我的循環速度非常快,所以它在幾秒鐘內將我的手機發短信20次。我想限制這一點。 我也不能讓事件觸發一個while循環來使它通過另一個循環。

我需要循環,以保持其運行週期,但跳過等到一定時間已經過去認爲案文我的電話的功能。

+1

向我們展示你嘗試在代碼中做到這一點?它是一個完美的初學者任務。 –

+0

我想這個問題比我最初描述的要深一點。觸發函數A的事件接近循環的開始。所以如果我在到達循環開始的時候簡單地使用了一個INT賦值,這個int就會被重置。我的代碼有敏感信息,因此很難簡單地複製和粘貼它。我主要是尋找一個內置的庫,可以通過.Tick命令或東西 – Busta

+1

它的一個循環與if語句處理這個問題,沒有什麼敏感或複雜有關。只需使用一個'TimeSpan'和'如果(ts.ElapsedMilliSeconds>延時)功能();' –

回答

1

使用定時器:

Timer myTimer = new Timer(); 
myTimer.Interval = 200; //double timer interval in ms 
myTimer.Elapsed += myTimer_Elapsed; 
myTimer.Start(); 

然後把你的函數內部myTimer_Elapsed:使用myTimer.Stop它

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     your_function(); 
    } 

停止();

+0

如果您的問題已通過此答案解決,請標記爲答案。謝謝。 –