Обновление item в listbox в отдельном потоке - Visual Basic .NET
Формулировка задачи:
Есть листбокс с множеством итемов с текстом допустим "текст какойто".
Как при нажатии на кнопку во всех итемов был изменен текст, но без зависания проги.
Но,ошибка в ListBox1.Items(i) = items(i) :
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'ListBox1' не из того потока, в котором он был создан.Решение задачи: «Обновление item в listbox в отдельном потоке»
textual
Листинг программы
Public Class Form1 Dim thead1 As System.Threading.Thread Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click thead1 = New System.Threading.Thread(AddressOf process_thead1) thead1.Start() End Sub Private Sub process_thead1() Dim items(ListBox1.Items.Count - 1) As String For i As Integer = 0 To ListBox1.Items.Count - 1 items(i) = ListBox1.Items(i) items(i) = "другой текст" InvokeMethod(i, items(i)) 'ListBox1.Items(i) = items(i) Next End Sub Private Sub InvokeMethod(ByVal i As Integer, ByVal Item As String) If ListBox1.InvokeRequired Then ListBox1.BeginInvoke(New MethodInvoker(Sub() ListBox1.Items(i) = Item)) Else ListBox1.Items(i) = Item End If End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д