В моем проекте я пытаюсь перебрать значения и вызвать функцию на них. Когда отладка Count говорит мне, что есть 2 значения. Моя функция работает в DispatcherTimerC# для цикла, выходящего после 1 цикла
Мой таймер в конструкторе:
DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(runSync);
dispatcherTimer.Interval = new TimeSpan(0, 0, syncTime);
dispatcherTimer.Start();
Моя функция
private void runSync(object sender, EventArgs e)
{
//I can see the value of count is 2 when using break points
List<string> vals = repo.getRemovedAnswers();
for (int i = 0; i < vals.Count(); i ++)
{
//i do something with the element in my database
// send back a confirmation that the delete is finished
repo.setAnswerDeleted(vals.ElementAt(i));
Console.WriteLine(i + " removed");
//
}
Console.WriteLine("syncing");
}
Функция setAnswerDeleted в моем классе репо, это метод аннулируются так не возвращает перерыв или что-нибудь.
public List<String> getRemovedAnswers()
{
return _answersRemoved;
}
public void setAnswerDeleted(string uniqueIdAnswer)
{
_answersRemoved.RemoveAll(item => item == uniqueIdAnswer);
}
В журнале можно увидеть цикл запускается каждый dispatchtimer цикл и онил вызовы времени метод 1, почему это цикл не работает 2 раза, когда счетчик == 2?
«getRemovedAnswers()« случайно »return _answersRemoved;'? Затем вы удаляете элементы из того же списка, в котором вы выполняете итерацию. –
@ AlexD это, но изменяет ли значение vals? его в другом классе dosnt он делает копию? –
@SvenB Нет, это ссылка на тот же список. –