我有以下代码:
public void SetMove(Position3D pos, float time, float linearity, bool relative)
{
ExecuteOnActiveClients(delegate(NeuroClient client)
{
client.Engine.GetProcAnimation(name).SetMove(pos, time, linearity, relative);
}, true, true);
}
ExecuteOnActiveClients在队列中推送委托,异步使用并具有以下签名:
void ExecuteOnActiveClients(ClientDelegate action, Boolean parallel, Boolean wait, Boolean lockClient)
我有很多看起来像这个的函数,可以同时调用。
我注意到在执行ExecuteOnActiveClients之前我必须在函数中的变量中存储 name (这是类的私有字段)的值才能使此代码正常工作,因为如果我没有,委托使用 name 的最后一个值,而不是调用该函数时该字段的值。
我想这是范围问题,因为函数的参数(pos,time,linearity和relative)是正确的。
有没有办法强制代表在创建时使用名称的值,而不是执行时名称的值?
如果可能的话,我想避免将值存储在使用 ExecuteOnActiveClients 的许多函数中。
提前致谢
麦克