powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / События и многопоточность
1 сообщений из 1, страница 1 из 1
События и многопоточность
    #37129572
Questq2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В книжках отдельно разобрана многопоточность и отдельно разобраны события. Я сделал событие по примеру из книжки, и у меня обработчики события запускаются в том же потоке, в котором это событие было опубликовано, а при попытке обращения к данным события из другого потока, я получаю ошибки многопоточности.

К примеру, по таймеру делается запрос данных с сервера, затем пришедшие данные помещаются в производный от EventArgs объект и событие публикуется. Ниже код метода обработика:

Код: plaintext
1.
2.
3.
4.
5.
        private void NewDataHandler(object sender, NewDataEventArgs e)
        {
             //Обработчик срабатывает, и, к примеру, нужно обновить UI в зависимости от данных
             RefreshUI(e.Data)
        }

Обновение UI нужно делать в потоке UI, поэтому тут делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        private void RefreshUI(List<Element> elements = null)
        {
            _mainWindow.Dispatcher.BeginInvoke(new ThreadStart(() =>
            {
                if (elements != null && elements.Count > 0)
                {
                   foreach (var element in elements)
                    {
                              //тут уже какие-то действия по обновлению
                    }
                }
            }));
        }

Но я сразу получаю ошибку в foreach (var element in elements) - коллекция была изменена, перечисление выполнить невозможно. В чем причина, и как это побороть?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / События и многопоточность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]