Я пытаюсь найти смысл в приложении, которое мне передали, чтобы отследить источник ошибки. Есть немного кода (здесь упрощенно), который создает четыре потока, которые в свою очередь заполняют представления списка в главной форме. Каждый метод получает данные из базы данных и извлекает графику из библиотеки ресурсов для непосредственного заполнения списка изображений и списка просмотра.
Из того, что я прочитал здесь ( ссылка ), обновление элементов пользовательского интерфейса из любого потока, кроме потока пользовательского интерфейса, делать не следует, и все же это работает?
Thread t0 = new Thread(new ThreadStart(PopulateListView1));
t0.IsBackground = true;
t0.Start();
Thread t1 = new Thread(new ThreadStart(PopulateListView2));
t1.Start();
Thread t2 = new Thread(new ThreadStart(PopulateListView3));
t2.Start();
Thread t3 = new Thread(new ThreadStart(PopulateListView4));
t3.Start();
Сама ошибка - исключение System.InvalidOperationException «Невозможно добавить изображение в ImageList». который заставляет меня задуматься, связан ли вышеуказанный код каким-либо образом.
Рекомендуется ли этот метод заполнения пользовательского интерфейса, и если нет, каковы возможные осложнения в результате этого?
Обновление:
Возможно, я дал некоторую дезинформацию, ссылаясь на «форму». Приложение представляет собой приложение Windows Forms, но код взят из плагина приложения, основанного на пользовательском контроле. Потоки создаются внутри метода инициализации, публично предоставляемого этим элементом управления. Списки просмотра и т. Д. Также являются частью пользовательского контроля над этим плагином.