У меня есть следующий код:
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)
У меня есть много функций, которые похожи на эту, и которые могут вызываться одновременно.
Я заметил, что я должен сохранить значение name (которое является приватным полем класса) в переменной в функции, прежде чем я выполню ExecuteOnActiveClients, чтобы этот код работал хорошо, потому что если я нет, делегат использует последнее значение name , а не значение, которое поле имело при вызове функции.
Полагаю, это проблема области видимости, потому что параметры функции (pos, время, линейность и относительные) верны.
Есть ли способ заставить делегата использовать значение name при его создании, а не значение name при его выполнении?
Я бы хотел избежать сохранения значения в каждой из множества функций, которые используют ExecuteOnActiveClients , если это возможно.
Заранее спасибо
Mike