Public Sub add_log(ByVal a) Handles b.SendEvent
FileMonitor
End Sub
Public Class FileMonitor 'Класс обёртка
Public WithEvents bk As backup = New backup 'Объявили экземпляр класса.
Public Event SendEvent(ByVal s As String) 'Передача события в главную форму.
Public Sub MonitorEvent(ByVal s As String) Handles bk.cEvent_backup
RaiseEvent SendEvent(s)
End Sub
End Class
Public Class backup
Public Event cEvent_backup(ByVal drive As String) 'Объявляем событие
Public Sub Monitor_Event(ByVal mon As FileSystemWatcher, ByVal e As System.IO.FileSystemEventArgs)
'Вызываем событие и передаём параметры(Событие + имя диска) классу FileMonitor.
RaiseEvent cEvent_backup(e.ChangeType.ToString + " " + e.Name)
End Sub
End Class
Помогите с делегатами
В ней:
имеется:
Public WithEvents b As New FileMonitor 'Экземпляр класса FileMonitor
Loglist as ListBox
Код:
Из класса backup в родительский класс FileMonitor события передаются нормально.
А вот в процедуре add_log класса Form1 получаем исключение:
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "Loglist" не из того потока, в котором он был создан.
Помогите создать делегаты. Куда и что поставить?
Цитата:
this.Invoke(new MethodInvoker(delegate() {
//... тут как обычно работаешь с объектами, которые расположены на форме..
}));
//... тут как обычно работаешь с объектами, которые расположены на форме..
}));
(с) Cas
Где this - экземпляр формы которой принадлежит контрол.
Если это требуется не в одном единственном месте - объяви отдельно делегат. По синтаксису, правда, не подскажу - не силен в VB - но, думаю, это поможет:
http://msdn.microsoft.com/ru-ru/library/ms172879.aspx