У меня есть ListView с циклом для заполнения элементов, каждый элемент создается есть экземпляр класса TSMPPConnection и этот класс свойство ConnectionItem держать элемент ListView, я хочу изменить пункт текст из внутренний класс, запрос которого поступает из объектного события, когда я изменяю текст элемента напрямую, он генерирует исключение.Делегатов в пределах класса
Дополнительная информация: операция Cross-нить не действует: Control «lstConnections» доступ из другого потока, чем нить она была создана.
Делегаты: я использовал делегат для достижения этой, но ту же ошибку.
Delegate Sub dlg_WriteConnectionItemStatus(s As String)
Sub WriteConnectionItemStatus(s As String)
Dim dlg As New dlg_WriteConnectionItemStatus(AddressOf WriteConnectionItemStatus)
dlg.Invoke(s)
'there is no InvokeRequired to check if execution come from delgate and avoid infinite loop
If ConnectionItem IsNot Nothing Then ConnectionItem.SubItems(6).Text = s
End Sub
Там нет InvokeRequired, чтобы проверить исполнение приходят от делегата и избежать бесконечного цикла
Попробуйте 1: Использование другого суб с такой же структурой, чтобы вызвать его из делегатом внутри оригинальной суб.
Delegate Sub dlg_WriteConnectionItemStatus(s As String)
Sub WriteConnectionItemStatus(s As String)
Dim dlg As New dlg_WriteConnectionItemStatus(AddressOf WriteConnectionItemStatus_Interface)
dlg.Invoke(s)
End Sub
Sub WriteConnectionItemStatus_Interface(s As String)
If ConnectionItem IsNot Nothing Then ConnectionItem.SubItems(6).Text = s
End Sub
ЖЕ ОШИБКА
большое спасибо моя проблема решена :); – Realbitt