Hallo, ich bin absoluter Anfänger, also wundert euch bitte nicht 
Ich will mit diesem Programm erst mal simple Files Zählen und die Zahl dann ausgeben (später dann kopieren, es soll ein Kopierprogramm werden). Da das Programm bei vielen Files stockt und nicht mehr reagiert (eine Zeit lang nur) , dachte ich an einen Backgroundworker.
Wie gesagt das ist mein erstes Programm..
Ich habe wohl die Variable SourcePath falsch definiert. Diese ist bei Zeile 61 gleich Null. Allerdings ist sie bei Zeile 24 noch schön das was ich eingebe also genau der Pfad sagen wir "C:/Test". Habs mit dem Haltebefehl durch den Debugger laufen lassen und da sehe ich ja die Variable. Irgendwie ist SourcePath also auf Null gesetzt worden durch den Aufruf des Backgrounworkers..Warum? Und wie behebe ich das?
Fehler:
In dieser Zeile:

Ich will mit diesem Programm erst mal simple Files Zählen und die Zahl dann ausgeben (später dann kopieren, es soll ein Kopierprogramm werden). Da das Programm bei vielen Files stockt und nicht mehr reagiert (eine Zeit lang nur) , dachte ich an einen Backgroundworker.
Wie gesagt das ist mein erstes Programm..
Ich habe wohl die Variable SourcePath falsch definiert. Diese ist bei Zeile 61 gleich Null. Allerdings ist sie bei Zeile 24 noch schön das was ich eingebe also genau der Pfad sagen wir "C:/Test". Habs mit dem Haltebefehl durch den Debugger laufen lassen und da sehe ich ja die Variable. Irgendwie ist SourcePath also auf Null gesetzt worden durch den Aufruf des Backgrounworkers..Warum? Und wie behebe ich das?
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- 'Set Variables
- Dim Files As Integer = 0
- Dim SourcePath As String
- 'End Button
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Close()
- End Sub
- 'Choose Source
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Dim ShowFolders As FolderBrowserDialog = New FolderBrowserDialog
- ShowFolders.RootFolder = Environment.SpecialFolder.MyComputer
- If ShowFolders.ShowDialog = Windows.Forms.DialogResult.OK Then
- Dim SourcePath As String = ShowFolders.SelectedPath
- TextBox1.Text = SourcePath
- End If
- BackgroundWorker1.RunWorkerAsync()
- Label3.Text = Files
- End Sub
- 'Choose Destination
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- Dim ShowFolders1 As FolderBrowserDialog = New FolderBrowserDialog
- ShowFolders1.RootFolder = Environment.SpecialFolder.MyComputer
- If ShowFolders1.ShowDialog = Windows.Forms.DialogResult.OK Then
- Dim DestinationPath As String = ShowFolders1.SelectedPath
- TextBox2.Text = DestinationPath
- End If
- End Sub
- 'Copy
- 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("No Source or Destination Path!")
- End If
- End Sub
- 'Count Files
- Private Sub Choice()
- Dim Files As Integer = My.Computer.FileSystem.GetFiles(SourcePath, FileIO.SearchOption.SearchAllSubDirectories, "*.*").Count
- End Sub
- 'Background Worker thta count files
- Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
- Call Choice()
- End Sub
- End Class
Fehler:
In System.ArgumentNullException ist eine Ausnahme vom Typ "mscorlib.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.
Zusätzliche Informationen: Der Wert darf nicht NULL sein.
In dieser Zeile:
SourcePath Nothing String