내가이 개 수업을에 실행하기 위해 어떻게해야합니까, 하나는 윈도우 양식 frmMain 수이고 다른 하나는 vb.NET의 클래스 2003가 어떻게 이벤트가 "메인 스레드"
frmMain 수는 실행되는 시작 버튼을 포함 다른 클래스의 모니터 기능. 내 질문은, 수동으로 이벤트 처리기를 추가하는 것입니다 - 이벤트가 실행될 때 "주 스레드"에서 그들을 excute 얻을 수 있습니다. 툴팁 풍선이 트레이 아이콘에서 튀어 나오면 기존 트레이 아이콘에 팝업 대신 두 번째 트레이 아이콘이 표시되기 때문입니다. frmMain에서 풍선 툴팁을 표시하려고하면 기존 트레이 아이콘에 표시되기 때문에 새 스레드에서 이벤트가 발생하기 때문에 확인할 수 있습니다. 당신은,이, UI 스레드에서 대리자 (이벤트)를 실행하지 않습니다 Control.Invoke를 사용할 필요가
Friend Class monitorFolders
Private _watchFolder As System.IO.FileSystemWatcher = New System.IO.FileSystemWatcher
Private _eType As evtType
Private Enum evtType
changed
created
deleted
renamed
End Enum
Friend Sub monitor(ByVal path As String)
_watchFolder.Path = path
'Add a list of Filter to specify
_watchFolder.NotifyFilter = IO.NotifyFilters.DirectoryName
_watchFolder.NotifyFilter = _watchFolder.NotifyFilter Or IO.NotifyFilters.FileName
_watchFolder.NotifyFilter = _watchFolder.NotifyFilter Or IO.NotifyFilters.Attributes
'Add event handlers for each type of event that can occur
AddHandler _watchFolder.Changed, AddressOf change
AddHandler _watchFolder.Created, AddressOf change
AddHandler _watchFolder.Deleted, AddressOf change
AddHandler _watchFolder.Renamed, AddressOf Rename
'Start watching for events
_watchFolder.EnableRaisingEvents = True
End Sub
Private Sub change(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
If e.ChangeType = IO.WatcherChangeTypes.Changed Then
_eType = evtType.changed
notification()
End If
If e.ChangeType = IO.WatcherChangeTypes.Created Then
_eType = evtType.created
notification()
End If
If e.ChangeType = IO.WatcherChangeTypes.Deleted Then
_eType = evtType.deleted
notification()
End If
End Sub
Private Sub notification()
_mainForm.NotifyIcon1.ShowBalloonTip(500, "Folder Monitor", "A file has been " + [Enum].GetName(GetType(evtType), _eType), ToolTipIcon.Info)
End Sub
End Class