| |
VB.NET - Ein- und UmsteigerFileSystemWatcher-Beispiel | | | Autor: Manfred X | Datum: 28.09.15 06:31 |
| Hallo!
Probier' mal diese Variante ....
Es wird ein Thread gestartet (CreateAndFill), der eine Datei exclusiv
zum Schreiben öffnet.
Es werden einige Text-Zeilen in einer Verzögerungs-Schleife eingetragen.
Der Zeitpunkt der Beendigung dieses Thread wird in einem Label (lblEnd)
angezeigt.
Der entprechend eingerichtete Filesystemwatcher (fsw) meldet im Created-Event
den Zeitpunkt des Erstellens dieser Datei (lblCreated) und im Changed-Event
das Schließen der Datei (lblChanged).
Zusätzlich wird der geschriebene Datei-Inhalt in der Routine gelesen, die
im Changed-Handler delegiert wird (Notify_Changed), und in eine Textbox
(txtFile) eingetragen.
Hinweis:
Die Überwachung des Filesystemwatchers arbeitet in einem Hintergrundthread,
deshalb ist im Rahmen der Ereignisverarbeitung ggf. Invoke erforderlich (vgl. Code).
Windows.Forms.Form:
Public Class frmFileSystemWatcherDemo
Dim WithEvents fsw As New IO.FileSystemWatcher
'Controls
Dim lblcreated As New Label With _
{.Parent = Me, .Width = 300}
Dim lblchanged As New Label With _
{.Parent = Me, .Top = 30, .Width = 300}
Dim lblend As New Label With _
{.Parent = Me, .Top = 60, .Width = 300}
Dim txtFile As New TextBox With _
{.Parent = Me, .Top = 100, .Width = 300, .Height = 150, _
.Multiline = True}
Delegate Sub changetypedel(ByVal ct As IO.WatcherChangeTypes)
Dim Show_Text As New changetypedel(AddressOf Notify_changed)
Dim filepath As String = "C:\daten\fsw.csv" 'zu überwachendes File
Private Sub frmFileSystemWatcherDemo_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
'Sicher stellen, daß die Datei nicht vorhanden ist
IO.File.Delete(filepath)
'Einrichten des Filesystemwatchers
With fsw
.BeginInit()
.Filter = "*.csv"
.NotifyFilter = _
IO.NotifyFilters.FileName Or IO.NotifyFilters.Size
.Path = IO.Path.GetDirectoryName(filepath)
.EnableRaisingEvents = True
.EndInit()
End With
Me.Show()
'Thread zum Erstellen und Füllen der Datei
Dim t As New Threading.Thread _
(New Threading.ThreadStart(AddressOf CreateAndFill))
t.Start()
End Sub
'====================================================
'FSW-Eventverarbeitung
'====================================================
Private Sub Notify_created()
lblcreated.Text = "FSW erstellt: " & Now.ToString
End Sub
Private Sub fsw_Created(sender As Object, _
e As System.IO.FileSystemEventArgs) Handles fsw.Created
Me.Invoke(New MethodInvoker(AddressOf Notify_created))
End Sub
Private Sub Notify_changed(Changetype As IO.WatcherChangeTypes)
lblchanged.Text = _
"FSW geändert: " & Now.ToString & " " & Changetype.ToString
'Dateiinhalt nach dem Changed-Event lesen
txtFile.Text = IO.File.ReadAllText(filepath)
Me.Refresh()
End Sub
Private Sub fsw_Changed(sender As Object, _
e As System.IO.FileSystemEventArgs) Handles fsw.Changed
Me.Invoke(Show_Text, {e.ChangeType})
End Sub
'===================================================
'Thread zum Füllen der Datei
'===================================================
Private Sub Notify_ThreadEnd()
'CreateAndFill-Thread wird beendet
lblend.Text = "Thread beendet: " & Now.ToString
End Sub
Private Sub CreateAndFill()
'Filestream exclusiv öffnen
Using fs As New IO.FileStream(filepath, IO.FileMode.CreateNew, _
IO.FileAccess.Write, IO.FileShare.None), _
bw As New IO.BinaryWriter(fs)
For i As Integer = 0 To 10
bw.Write("Zeile " & CStr(i) & ";" & Now.ToString & vbCrLf)
Threading.Thread.Sleep(1000) 'Verzögerung
Next i
'End Using schließt den Filestream / Dateifreigabe
End Using
'Zeitpunkt der Dateifreigabe anzeigen
Me.Invoke(New MethodInvoker(AddressOf Notify_ThreadEnd))
End Sub
End Class
Beitrag wurde zuletzt am 28.09.15 um 06:33:02 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|