我想将变量传递到延迟后运行的函数中。我已经看到了类似的问题如何做到这一点(见下文)。我不认为这是我想要的,因为每次调用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