如何将参数传递给ElapsedEventHandler

时间:2017-01-12 21:42:29

标签: c# timer event-handling

我试图将一个整数值传递给ElapsedEventHandler,这样我就可以根据传入的整数来做逻辑。但是,当引发Event时,进入的值不是我初始化它的值。我可能不完全理解代表的工作方式。

class Example
{
    Dictionary<int, Timer> timer;

    public Example()
    {
        timer = new Dictionary<int, timer>();
        for(int i = 0; i < 12; ++i)
        {
            timer.Add(i, new Timer(5000));
            timer[i].Elapsed += delegate { TimerTickCustom(i); };
        }
    }
    public void Process() // called each cycle
    {
        for(int i = 0; i < 12; ++i)
        {
            timer[i].Start();
        }
    }
    private void TimerTickCustom(int i)
    {
        // The value of i coming in does not match the dictionary key.
    }
}

1 个答案:

答案 0 :(得分:1)

取决于委托人将本地值<button id="reset" onclick="resetFields()">Reset Fields</button> <input id="myID" type="text"> <input id="myID2" type="text"> <span id="mySpan">Some text here</span> <span id="mySpan2">Some text here</span> 视为&#34;具体&#34;它的范围。由于i是在循环之外定义的,因此代理人没有定义它自己的&#34; copy&#34;这个变量 - 因为所有代表都期望i

您需要做的是将其分配给同一级别的变量&#34;&#34;作为代表本身。

我不确定我是否在这里使用正确的语言来解释它。但这应该有效:

i

如果您知道要在搜索引擎中键入哪些字词,那么会有interesting discussion {当然,除非有人告诉您,否则您无法知道。)