我想將變量傳遞到延遲後運行的函數中。我已經看到了類似的問題如何做到這一點(見下文)。我不認爲這是我想要的,因爲每次調用method1
時,附加的匿名函數的數量都會增加?我需要做的是在添加新的匿名函數之前刪除任何現有的匿名函數。但我不認爲這是可能的。有沒有辦法在延遲後調用方法,但每次都傳遞一個新的變量值?延遲後調用方法(帶參數)
using System.Timers;
myTimer = new Timer();
myTimer.Interval = 3000;
myTimer.AutoReset = false;
public void method1(int var1){
myTimer.Elapsed += delegate { doSomething(var1); };
myTimer.Start();
}
public void doSomething(int arg1){...}
UPDATE
基本上每當運行method1
,我想要的東西后發生3秒,我需要在每一個可隨時間變化的參數來傳遞。
我不認爲我可以使用一個字段來存儲變量,因爲method1
可能會在第一個計時器到期之前多次調用。即可能會有幾個問題。例如。在一個時間點「DoSomething的」的闕等待發生可能是......
doSomething(3)
doSomething(7)
doSomething(1)
它是在一個測試平臺剛剛使用,method1
將運行名爲不超過50倍。我想確保每個doSomething(var1)
只被調用一次,而不是每3秒調用一次。即每次調用method1
時只有一個doSomething
。
這是一個Windows控制檯應用程序。
爲什麼不你將參數移動到一個字段並將其用作共享資源? – Redwan
@Redwan,不能這樣做,我已經更新了我的問題。 – spiderplant0
變量中有什麼樣的數據?你是否希望每次針對不同的數據執行相同的邏輯,或者甚至可能執行不同的邏輯? – LeftyCoder