Hallo, ich bin totaler Einsteiger in VB und versuche mich an einem PRG welches Files kopiert. Dieses zählt bei Quell-Ordner-Auswahl die Anzahl der Files in dem Ordner und gibt die Anzahl aus auf Label3.
Funktioniert auch, nur das bei hoher Files Anzahl sagen wir 50.000 das PRG hängt, aber fehlerfrei weitermacht. Um diese Hängen zu vermieden dachte ich ich nutze einen Backgroundworker.
Das Fenster sollte dann ja noch reagieren und der user weiß das es nicht gecrashed ist...Dachte ich.... ist das korrekt?
Das Problem ist das der Fehler "Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden,..." erscheint in Zeile 53. Wie kann ich den beseitigen?
Funktioniert auch, nur das bei hoher Files Anzahl sagen wir 50.000 das PRG hängt, aber fehlerfrei weitermacht. Um diese Hängen zu vermieden dachte ich ich nutze einen Backgroundworker.
Das Fenster sollte dann ja noch reagieren und der user weiß das es nicht gecrashed ist...Dachte ich.... ist das korrekt?
Das Problem ist das der Fehler "Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden,..." erscheint in Zeile 53. Wie kann ich den beseitigen?
Code:
Imports System.IO
Public Class Form1
Dim sourcepfad As String = Nothing
'Ende Button
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Close()
End Sub
'Quelle Wählen
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
' Ziel wälen
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim OrdnerZeigen1 As FolderBrowserDialog = New FolderBrowserDialog
OrdnerZeigen1.RootFolder = Environment.SpecialFolder.MyComputer
[B]If OrdnerZeigen1.ShowDialog = Windows.Forms.DialogResult.OK Then[/B]
Dim TargetPfad As String = OrdnerZeigen1.SelectedPath
TextBox2.Text = TargetPfad
End If
End Sub
'Kopierroutine
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If TextBox1.Text <> Nothing And TextBox2.Text <> Nothing Then
My.Computer.FileSystem.CopyDirectory(TextBox1.Text, TextBox2.Text, showUI:=FileIO.UIOption.AllDialogs)
Else
MessageBox.Show("Keinen Quell/Zielpfad angegeben")
End If
End Sub
Private Sub Auswahl()
Dim OrdnerZeigen As FolderBrowserDialog = New FolderBrowserDialog
OrdnerZeigen.RootFolder = Environment.SpecialFolder.MyComputer
If OrdnerZeigen.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim SourcePfad As String = OrdnerZeigen.SelectedPath
TextBox1.Text = SourcePfad
'Files Zählen
Dim files As Integer = My.Computer.FileSystem.GetFiles(SourcePfad, FileIO.SearchOption.SearchAllSubDirectories, "*.*").Count 'das *.* zählt alle filetypen glaub ich
Label3.Text = files
End If
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Call Auswahl()
End Sub
End Class