如何将参数传递给ElapsedEventHandler

用户名

我试图将一个整数值传递到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.
    }
}

取决于本地值在哪里,i代表将其视为其范围的“特定”值。正如i在循环外部定义的那样,委托没有定义它自己的该变量的“副本”,因为所有委托都期望相同i

您需要做的是将其分配给与委托本身“处于同一级别”的变量。

不知道我是否在这里使用正确的语言来解释它。但这应该工作:

class Example
{
    Dictionary<int, Timer> timer;

    public Example()
    {
        timer = new Dictionary<int, Timer>();
        for(int i = 0; i < 12; ++i)
        {
            int iInScopeOfDelegate = i;
            timer.Add(i, new Timer(5000));
            timer[i].Elapsed += delegate { TimerTickCustom(iLocalToDelegate ); };
        }
    }
    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.
    }
}

如果您知道要在搜索引擎中键入哪些单词,那么将会进行一些有趣的讨论(当然,只有在有人告诉您时您才能真正知道哪些单词)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将参数传递给片段?

来自分类Dev

如何将参数传递给线程?

来自分类Dev

如何将参数传递给ValidationAttribute?

来自分类Dev

如何将参数传递给BootstrapperFile?

来自分类Dev

如何将参数传递给jvmmon?

来自分类Dev

如何将参数传递给exe?

来自分类Dev

如何将参数传递给嵌入

来自分类Dev

如何将参数传递给sed?

来自分类Dev

如何将参数传递给BootstrapperFile?

来自分类Dev

如何将参数传递给别名?

来自分类Dev

如何将参数传递给jvmmon?

来自分类Dev

如何将参数传递给boilermake

来自分类Dev

如何将参数传递给模态

来自分类Dev

如何将参数传递给路由

来自分类Dev

如何将参数传递给路由?

来自分类Dev

如何将参数或参数传递给Gradle任务

来自分类Dev

如何将函数作为参数传递给参数?

来自分类Dev

如何将参数传递给此参数?

来自分类Dev

JavaScript:如何将额外的参数传递给回调

来自分类Dev

如何将参数传递给任务队列?

来自分类Dev

如何将参数传递给Geb中的内容定义?

来自分类Dev

如何将参数传递给mainLayoutAsset.php文件?

来自分类Dev

如何将空参数传递给python函数?

来自分类Dev

如何将参数传递给Java bash脚本?

来自分类Dev

如何将查询参数传递给程序?

来自分类Dev

如何将初始参数传递给javascript函数

来自分类Dev

如何将参数传递给draw()方法-FLTK

来自分类Dev

如何将参数传递给TypeScript模块?

来自分类Dev

如何将列名作为参数传递给dplyr?