После того как я получаю список с сервера, у меня этот список может быть в количестве от 0 до 15 элементов - не больше. Я создаю поток, в котором добавляю элементы в локальную базу и в локальный список. Проблема заключается в том , что когда я прохожусь циклом foreach по элементам, которые пришли с сервера, программа выбивает ошибку, что я выхожу за пределы списка, но при этом база и локальный список заполняется, в Try Catch ничего не попадает.
Метод в котором я запускаю поток.
private void Start_Upload_Server(string ValueJobject)
{
try
{
// Загружаю сообщения с сервера
var TempList = JsonConvert.DeserializeObject<ObservableCollection<ChatModel>>(ValueJobject);
Thread_UploadServer = new Thread(new ParameterizedThreadStart(GetLastMessage_onServer));
Thread_UploadServer.Start(TempList);
}
catch(Exception ex)
{
var s = ex;
}
} // Start_Upload_Server
Метод в котором я обрабатываю данные
private async void GetLastMessage_onServer(object obj)
{
// Список с сервреа тут 15 элементов
var TempList = (ObservableCollection<ChatModel>)obj;
try
{
// Бегу по списку
foreach (var item in TempList)
{
// Уточняем явялется ли сообщение шифрованным
var flag_Line_Correct = GetLineCorrect(item.Message);
if (flag_Line_Correct)
item.Message = Decript(item.Message);
// устанавливаю нужные мне параметры
SetStartParametr_Message(item);
// Добавляю в локальную бд
await ChatDbService.AddMessage(item);
// Добавляю в локальный список
MessageList.Add(item);
}
}
catch(Exception ex)
{
var exception = ex.Message;
}
finally
{
Thread_UploadServer.Abort();
Thread_UploadServer.Join();
}
} // GetAllMessage
Даже если внутри foreach не будет кода, и программа в пустую пробежится по списку она серавно выйдет за пределы списка. Вот моя ошибка
System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index'