+ 1

Cual es la manera mas eficiente de agregar y eliminar elementos a una lista que esta siendo iterada (C#)

Tengo una aplicación que ejecuta una serie de tareas en un tiempo definido, estas tareas están en una lista que se va recorriendo y a su vez se van eliminando tareas que se ejecutan en cada iteracion, el caso es que al agregar elementos a esa lista mientras se esta recorriendo/vaciando modifica la cantidad de elementos, causando errores en algunos casos, entonces, como se pueden crear colas de tareas o listas que se puedan procesar y añadir a la vez?

12th Mar 2018, 4:00 AM
Reinaldo Moreno
Reinaldo Moreno - avatar
1 Resposta
+ 1
var array = { 1, 2, 3, 4, 5 } array = array.Where(item => item != 3).ToArray(); //retira el 4o. elemento Pode fazer um método de extensão para ter um removeAt() (que existe em um List) no Array: public static T[] RemoveAt<T>(this T[] source, int index) { T[] dest = new T[source.Length - 1]; if( index > 0 ) Array.Copy(source, 0, dest, 0, index); if( index < source.Length - 1 ) Array.Copy(source, index + 1, dest, index, source.Length - index - 1); return dest; }
21st Mar 2018, 6:05 PM
Sebastian Junior
Sebastian Junior - avatar