No puedo entender cómo recorrer una lista Action
. Cuando lo intento, termino con los valores siendo los mismos que la iteración anterior.Looping a través de una lista de acciones
Aquí está el código (ejemplo simplificado):
string[] strings = { "abc", "def", "ghi" };
var actions = new List<Action>();
foreach (string str in strings)
actions.Add(new Action(() => { Trace.WriteLine(str); }));
foreach (var action in actions)
action();
Salida:
ghi
ghi
ghi
¿Por qué es siempre seleccionando el elemento final en strings
cuando se realiza la acción?
Y cómo puedo conseguir el resultado deseado, que sería:
abc
def
ghi
Gah, usted gana. Sabía cómo solucionarlo, pero no podía recordar el motivo. ¡Cierre! ¡Necesito un cierre! +1 :) – Joshua
@Joshua no fue hace mucho tiempo cuando aprendí en un poco más profundo :) ... esto puede ser bueno para leer más http://stackoverflow.com/questions/9412672/lambda-expressions-with -multithreading-in-c-sharp –
Interesante, nunca me di cuenta. Gracias. – demoncodemonkey