我想为每个对象分配不同的计时器.
每个对象都包含Timer作为类成员.
这就是我尝试过的:
private void EntityTimeElapsed(object sender, MyEntity myEntity)
{
}
foreach (MyEntity myEntity in entities)
{
myEntity.timer.AutoReset = true;
myEntity.timer.Elapsed += (sender, arguments) => this.EntityTimeElapsed(sender, myEntity);
myEntity.timer.Start();
}
Run Code Online (Sandbox Code Playgroud)
问题是'EntityTimeElapsed'被最后一个"MyEntity"对象击中,而不是我想要的那个.
我该如何解决?
更新:
我目前正在使用.Net 4.0
试试这个:
foreach (MyEntity myEntity in entities)
{
var myEntity2 = myEntity ;
myEntity2.timer.AutoReset = true;
myEntity2.timer.Elapsed += (sender, arguments) => this.EntityTimeElapsed(sender, myEntity2);
myEntity2.timer.Start();
Run Code Online (Sandbox Code Playgroud)
}
有http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx解释为什么你总是在你的lambda中看到总是最后一个值ofEntity.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |