Я пытаюсь разобраться в приложении, которое мне вручили, чтобы отследить источник ошибки. Есть небольшой код (здесь упрощенный), который создает четыре потока, которые, в свою очередь, заполняют представления списков в основной форме. Каждый метод получает данные из базы данных и извлекает графику из ресурсной dll, чтобы напрямую заполнить список изображений и представление списка.
Из того, что я читал здесь (ссылка) обновление элементов пользовательского интерфейса из любого потока, кроме потока пользовательского интерфейса, не должно выполняться, и все же это работает?
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». что заставляет меня задуматься, связан ли приведенный выше код каким-либо образом.
I Рекомендуется ли этот метод заполнения пользовательского интерфейса, и если нет, то каковы возможные осложнения в результате этого?
Обновлять:
Возможно, я дал некоторую дезинформацию, сославшись на «форму». Приложение представляет собой приложение Windows Forms, но код взят из подключаемого приложения, основанного на пользовательском элементе управления. Потоки создаются внутри метода инициализации, публично предоставляемого этим элементом управления. Списки и т. Д. Также являются частью этого плагина usercontrol.