Я пишу (мое первое) приложение WPF, которое ищет в Интернете и отображает ссылки в ListBox.Чтобы ускорить все, я использую несколько потоков, чтобы загрузить ссылки.Тем не менее, я столкнулся с интересной многопоточной дилеммой:
Предположим, у меня есть поток пользовательского интерфейса, а затем появились еще 2 потока для загрузки ссылок.Теперь темы загрузки добавляют ссылки на List
, называемый LinkList
, с которым связан мой ListBox
.Если Thread1 обновляет LinkList
, тогда поток пользовательского интерфейса пытается выполнить итерацию по LinkList
, чтобы повторно связать ListBox
.Если во время итерации потока пользовательского интерфейса поток 2 пытается добавить элементы в LinkList
, в потоке пользовательского интерфейса возникает исключение, поскольку вы не можете добавить элемент в список во время итерации.Я хочу ждать, пока все потоки не вернутся, чтобы связать ListBox, так как это означает, что пользователь должен ждать долго.Есть ли способ справиться с этим?Можно ли как-то поместить lock
вокруг итерации привязки в потоке пользовательского интерфейса?