VB.NET KOmmando wird mehrfach ausgeführt (FileSystemWatcher)
Hallo,
ich stehe vor einem Problem.
Ich habe einen FileSystemWatcher.
Wenn er eine neue Datei (*.ini) erkennt, dann soll eine im Hintergrund laufende Form geöffnet werden, was auch super funktioniert.
Die Form die sich öffnet, hat auch einen Button der das ganze wieder minimieren soll -> Me.Hide() & Me.ShowinTaskbar = False.
Leider öffnet sich die Form immer wieder selbständig, da ich vermute, das das irgendetwas mit dem Ablauf zu tun hat.
Besteht die Möglichkeit, ein Kommando in dem Fall "Me.Show" nur einmal auszuführen.
Bzw. das die Sub DS_neu allgemein nur einmal durchläuft?
Vielen Dank
duschgas
ich stehe vor einem Problem.
Ich habe einen FileSystemWatcher.
Dim PFAD As String = TextBox5.Text
' --- Instanziierung
Dim watcher As New FileSystemWatcher()
watcher.Path = PFAD
watcher.Filter = "*.ini"
watcher.IncludeSubdirectories = True
watcher.NotifyFilter =
NotifyFilters.Attributes Or
NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or
NotifyFilters.Security Or
NotifyFilters.Size Or
NotifyFilters.FileName Or
NotifyFilters.DirectoryName
AddHandler watcher.Changed,
AddressOf DS_aenderung
AddHandler watcher.Created, AddressOf DS_neu
AddHandler watcher.Deleted,
AddressOf DS_loeschen
AddHandler watcher.Renamed, AddressOf DS_name
watcher.EnableRaisingEvents = True
Wenn er eine neue Datei (*.ini) erkennt, dann soll eine im Hintergrund laufende Form geöffnet werden, was auch super funktioniert.
Die Form die sich öffnet, hat auch einen Button der das ganze wieder minimieren soll -> Me.Hide() & Me.ShowinTaskbar = False.
Leider öffnet sich die Form immer wieder selbständig, da ich vermute, das das irgendetwas mit dem Ablauf zu tun hat.
Besteht die Möglichkeit, ein Kommando in dem Fall "Me.Show" nur einmal auszuführen.
Bzw. das die Sub DS_neu allgemein nur einmal durchläuft?
Public Sub DS_neu(ByVal source As Object,
ByVal e As FileSystemEventArgs)
Dim sb As StringBuilder = New StringBuilder(1024)
INI.Lesen("Settings", "ShowMSG", "", sb, sb.Capacity, e.FullPath)
If sb.ToString = "True" Then
Try
INI.Lesen("Notification", "Subject", "", sb, sb.Capacity, e.FullPath.Replace(".txt", ".ini"))
Me.Invoke(Sub() TextBox3.Text = sb.ToString)
INI.Lesen("Picture", "NotPic", "", sb, sb.Capacity, e.FullPath.Replace(".txt", ".ini"))
If sb.ToString = "Notification" Then
Me.Invoke(Sub() PictureBox1.Enabled = True)
Me.Invoke(Sub() PictureBox1.Image = My.Resources.blue_ico)
ElseIf sb.ToString = "Error" Then
Me.Invoke(Sub() PictureBox1.Enabled = True)
Me.Invoke(Sub() PictureBox1.Image = My.Resources.red_ico)
ElseIf sb.ToString = "Warning" Then
Me.Invoke(Sub() PictureBox1.Enabled = True)
Me.Invoke(Sub() PictureBox1.Image = My.Resources.yellow_ico)
End If
Threading.Thread.Sleep(25)
Me.Invoke(Sub() TextBox2.Text = System.IO.File.ReadAllText(e.FullPath.Replace(".ini", ".txt")))
'Hier öffnet die versteckte Form
Me.Invoke(Sub() Me.Show())
Catch
End Try
End If
End Sub
Vielen Dank
duschgas
Please also mark the comments that contributed to the solution of the article
Content-ID: 298769
Url: https://administrator.de/contentid/298769
Printed on: November 5, 2024 at 16:11 o'clock
3 Comments
Latest comment
Hi,
na ob das dann aber so elegant ist, wird sich zeigen. Was ist, wenn man in einem Zug mehrere INI-Dateien in den Pfad rein kopiert. Bekommt er dann alle Dateien gemeldet?
Schau mal hier: http://www.codeproject.com/Articles/58740/FileSystemWatcher-Pure-Chaos- ...
Darauf bin ich vor einiger Zeit gestoßen. Da hat sich schon mal jemand mit der Problematik beschäftigt, dass der FileSystemWatcher nur sehr schwammig meldet.
E.
na ob das dann aber so elegant ist, wird sich zeigen. Was ist, wenn man in einem Zug mehrere INI-Dateien in den Pfad rein kopiert. Bekommt er dann alle Dateien gemeldet?
Schau mal hier: http://www.codeproject.com/Articles/58740/FileSystemWatcher-Pure-Chaos- ...
Darauf bin ich vor einiger Zeit gestoßen. Da hat sich schon mal jemand mit der Problematik beschäftigt, dass der FileSystemWatcher nur sehr schwammig meldet.
E.