Hallo, ich schreibe ein Programm, welches Dateien synchronisiert. Ich wollte einen Kopierdialog anzeigen lassen, wie man ihn von Windows kennt. Alle ... Minuten soll geprüft werden, ob es neue Dateien gibt. Die Timer-Tick-Sub ist asynchron, daher ist die aufgerufene Sub Copy() es auch. Ich verwende Me.invoke(), dennoch heißt es ungültiger threadübergreifender Vorgang. Der Fehler ist in der Sub Copy(). Weiß jemand Rat?
Spoiler anzeigen
VB.NET-Quellcode
- Private Sub Copy()
- Using KD As New Kopierdialog
- Me.Invoke(Sub() KD.Show(Me))
- For Each _file As IO.FileInfo In zu_kopierende_Dateien_Liste
- _file.CopyTo(wohin_kopieren & _file.Name, True)
- Next
- End Using
- End Sub
- Private Async Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Await Task.Run(Sub()
- Dim DI As IO.DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(Ordnerpfad)
- Scan_Directory_and_check_whether_Files_are_new(DI)
- Copy()
- End Sub)
- End Sub