Hallo!
Für mein derzeitiges Projekt muss ich einen BackgroundWorker starten. Das mache ich so:
Danach wird folgender Code ausgeführt:
Der obige Code ruft folgenden Code auf:
Leider wird der BackgroundWorker mehrmals gestartet, weshalb ich eine Exception erhalte, das die Datei bereits vorhanden ist.
Nun habe ich schon einiges versucht, zum Beispiel mit Booleans gearbeitet, um das wirklich nur einmal starten zu lassen, leider ohne Erfolg.
Wie kann ich den BackgroundWorker wirklich nur einmal starten lassen?
MfG,
C8002.
Für mein derzeitiges Projekt muss ich einen BackgroundWorker starten. Das mache ich so:
Danach wird folgender Code ausgeführt:
VB.NET-Quellcode
- Private Sub Compressor_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles Compressor.DoWork
- For i = 1 To 10
- If Compressor.CancellationPending = True Then
- e.Cancel = True
- Exit For
- Else
- Dim g As New Tools
- g.CompressVideo(input, output)
- System.Threading.Thread.Sleep(500)
- Compressor.ReportProgress(i * 10)
- End If
- Next
- End Sub
Der obige Code ruft folgenden Code auf:
VB.NET-Quellcode
- Public Sub CompressVideo(ByVal sourceFile As String, ByVal outputPath As String)
- Dim P As New Process
- Dim i As New ProcessStartInfo
- Dim sr As StreamReader
- Dim ou As New FileInfo(sourceFile)
- i.FileName = My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData & "\used\ffmpeg.exe"
- i.Arguments = " -i """ + sourceFile + """ -ar 22050 -qscale " _
- & 50 & " -y """ + My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData & "\used\temp\" & ou.Name.Replace(".mp4", "").Replace(".wmv", "").Replace(".flv", "").Replace(".avi", "") + """"
- i.UseShellExecute = False
- i.WindowStyle = ProcessWindowStyle.Hidden
- i.RedirectStandardError = True
- i.RedirectStandardOutput = True
- i.CreateNoWindow = True
- P.StartInfo = i
- P.Start()
- sr = P.StandardError
- Dim Name As String = ou.Name.Replace(".mp4", ".rm").Replace(".wmv", ".rm").Replace(".flv", ".rm").Replace(".avi", ".rm")
- ZipFile.CreateFromDirectory(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData & "\used\temp\", outputPath & "\" & Name)
- End Sub
Leider wird der BackgroundWorker mehrmals gestartet, weshalb ich eine Exception erhalte, das die Datei bereits vorhanden ist.
Nun habe ich schon einiges versucht, zum Beispiel mit Booleans gearbeitet, um das wirklich nur einmal starten zu lassen, leider ohne Erfolg.
Wie kann ich den BackgroundWorker wirklich nur einmal starten lassen?
MfG,
C8002.
“If debugging is the process of removing software bugs, then programming must be the process of putting them in.”
-Unbekannt
-Unbekannt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „C8002“ ()