Hallo Zusammen,ich kämpfe seit Tagen mit meiner Picturebox.
Ich kopiere Bilder in ein Arbeitspfad und lösche diese wieder wenn ich diese Bilder angezeigt habe.
Dann fängt alles wieder von vorne an.
Problem ist nur, dass ich DeleteFile nicht erneut aufrufen kann, da irgendwas mich blockt.
Habe versucht alle Verweise auf die Picturebox zu lösen, aber irgendwie komm ich so nicht weiter...
Vielleicht kann mir da jemand helfen.
Danke
Fehler bei execption bei DeleteFile bei erneuten Durchlauf
Ich kopiere Bilder in ein Arbeitspfad und lösche diese wieder wenn ich diese Bilder angezeigt habe.
Dann fängt alles wieder von vorne an.
Problem ist nur, dass ich DeleteFile nicht erneut aufrufen kann, da irgendwas mich blockt.
Habe versucht alle Verweise auf die Picturebox zu lösen, aber irgendwie komm ich so nicht weiter...
Vielleicht kann mir da jemand helfen.
Danke
VB.NET-Quellcode
-
- Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
- Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
- Dim images_Screen As New List(Of Image)
- Dim index_Screen As Integer
- Do 'Until worker.CancellationPending = True
- If worker.CancellationPending = True Then
- e.Cancel = True
- Exit Do
- End If
- ' Lösche Bilder
- Try
- For Each foundFile As String In My.Computer.FileSystem.GetFiles(tempPfad_Screen, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.jpg")
- My.Computer.FileSystem.DeleteFile(foundFile)
- Next
- Catch ex As Exception
- End Try
- ' Kopiere den Bildschirmschoner vom Copy in Temp
- Try
- For Each foundFile As String In My.Computer.FileSystem.GetFiles(Pfad_Copy_Screen, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.jpg")
- My.Computer.FileSystem.CopyFile(foundFile, tempPfad_Screen & "\" & My.Computer.FileSystem.GetName(foundFile), True)
- Next
- Catch ex As Exception
- End Try
- ' Fülle Liste mit Bildern
- Try
- For Each Datei As String In My.Computer.FileSystem.GetFiles(tempPfad_Screen, FileIO.SearchOption.SearchTopLevelOnly, "*.jpg")
- images_Screen.Add(Image.FromFile(Datei))
- Next
- Catch ex As Exception
- End Try
- ' Zeige Lister der Bilder nach Zeit nacheinander an
- Do Until index_Screen = images_Screen.Count
- If images_Screen.Count > 0 Then
- If index_Screen >= images_Screen.Count Then
- index_Screen = 0
- End If
- worker.ReportProgress(100, "Nächstes Bild")
- System.Threading.Thread.Sleep(Zeit_Bildschirmschoner)
- pb_Screener.Image = Nothing
- pb_Screener.Image = images_Screen(index_Screen)
- index_Screen += 1
- End If
- Loop
- 'Aufräumen und Objecte frei geben
- pb_Screener.Image = Nothing
- images_Screen.Clear()
- index_Screen = 0
- 'Beweg mal den Cursor, um Win-Bildschirmschoner nicht anzusprechen
- Cursor.Position = New Point(nScreenWidth, nScreenHeight)
- Loop
- End Sub
Fehler bei execption bei DeleteFile bei erneuten Durchlauf
{System.IO.IOException: Der Prozess kann nicht auf die Datei "C:\temp\Bildschirmschoner\0000-PSA Erweiterung - Kopie (2).jpg" zugreifen, da sie von einem anderen Prozess verwendet wird. bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) bei System.IO.File.InternalDelete(String path, Boolean checkHost) bei System.IO.File.Delete(String path) bei Microsoft.VisualBasic.FileIO.FileSystem.DeleteFileInternal(String file, UIOptionInternal showUI, RecycleOption recycle, UICancelOption onUserCancel) bei Microsoft.VisualBasic.MyServices.FileSystemProxy.DeleteFile(String file) bei WhiteBoard_Schlosserei.Whiteboard.BackgroundWorker1_DoWork(Object sender, DoWorkEventArgs e) In H:\NET Programmierung\WhiteBoard-Schlosserei\WhiteBoard-Schlosserei\Haupt.vb:Zeile 586.}