Hallo,
ich habe ein seltsames Problem. Ich habe eine Liste an Dateien, die ich durchlaufe. Dieses durchlaufen der Dateien wird durch einen Timer ausgelöst, der deaktiviert wird, sobald ein bestimmter Dateitype im Verzeichnis gefunden wird.
Nun wird ein Thread erzeugt, der diese Datei verarbeitet und danach aus dem Verzeichnis entfernt. Sobald der Thread fertig ist, wird der Timer wieder aktiviert und sollte eigentlich nach der Auslösezeit den obigen Prozess immer wieder anstoßen. Tut er aber nicht. Der Timer steht auf enabled, aber er wird nie wieder ausgelöst. Warum?
ich habe ein seltsames Problem. Ich habe eine Liste an Dateien, die ich durchlaufe. Dieses durchlaufen der Dateien wird durch einen Timer ausgelöst, der deaktiviert wird, sobald ein bestimmter Dateitype im Verzeichnis gefunden wird.
Nun wird ein Thread erzeugt, der diese Datei verarbeitet und danach aus dem Verzeichnis entfernt. Sobald der Thread fertig ist, wird der Timer wieder aktiviert und sollte eigentlich nach der Auslösezeit den obigen Prozess immer wieder anstoßen. Tut er aber nicht. Der Timer steht auf enabled, aber er wird nie wieder ausgelöst. Warum?
VB.NET-Quellcode
- Imports System.Threading
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.Timer1.Enabled = True
- End Sub
- Public Sub Verzeichnisdurchlaufen()
- Dim sPath As String = "v:\DE\outgoing\"
- Dim oDir As New System.IO.DirectoryInfo(sPath)
- Dim oFiles As System.IO.FileInfo() = oDir.GetFiles("*.txt") 'Nur Textdateien
- For Each Dateiname In oFiles
- If InStr(Dateiname.ToString, "export", CompareMethod.Text) Then
- Timer1.Enabled = False
- Dateiverarbeiten(IO.Path.GetFileName(Dateiname.ToString))
- End If
- Next
- End Sub
- Public Sub Dateiverarbeiten(Dateiname As String)
- Dim ThreadDE As Thread = New Thread(Sub(t)
- MsgBox("Test") 'Hier wird eigentlich die Verarbeitung aufgerufen...
- Timer1.Enabled = True
- End Sub) With {
- .IsBackground = True
- }
- ThreadDE.Start()
- End Sub
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Verzeichnisdurchlaufen()
- End Sub
- End Class