Der Prozess kann nicht auf die Datei "bsp.png" zugreifen, da sie von einem anderen Prozess verwendet wird.

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von cuese3.

    Der Prozess kann nicht auf die Datei "bsp.png" zugreifen, da sie von einem anderen Prozess verwendet wird.

    Hallo,
    bei folgendem Code bekomme ich folgenden Fehler

    Fehler: Der Prozess kann nicht auf die Datei "splash.png" zugreifen, da sie von einem anderen Prozess verwendet wird.

    VB.NET-Quellcode

    1. If extras.CheckBox3.Checked Then
    2. Using strp As New System.IO.FileStream(extras.splash, IO.FileMode.Open)
    3. Using bmp As Bitmap = New Bitmap(strp)
    4. Dim width As Integer = 1280
    5. Dim height As Integer = 720
    6. Dim resultp1 As New Bitmap(width, height, Imaging.PixelFormat.Format24bppRgb)
    7. Using picture As Graphics = Graphics.FromImage(resultp1)
    8. picture.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed
    9. picture.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
    10. picture.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
    11. picture.DrawImage(bmp, 0, 0, resultp1.Width, resultp1.Height)
    12. picture.Dispose()
    13. resultp1.Save(Dest & "splash1.png")
    14. End Using
    15. End Using
    16. End Using
    17. System.IO.File.Delete(Dest & "\splash.png") 'Der Prozess kann nicht auf die Datei "splash.png" zugreifen, da sie von einem anderen Prozess verwendet wird.
    18. FileSystem.Rename(Dest & "\splash1.png", Dest & "\splash.png")
    19. End If


    Ich sehe im Code keinen Fehler.
    Kann jemand helfen ?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „cuese3“ ()

    Mach aus

    VB.NET-Quellcode

    1. Dim resultp1 As New Bitmap(width, height, Imaging.PixelFormat.Format24bppRgb)
    auch ein Using.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    'extras' ist eine Form.

    VB.NET-Quellcode

    1. Private Sub Weiter_Button(sender As Object, e As EventArgs) Handles Button1.Click
    2. If splashscreen Is Nothing = False Then
    3. PictureBox2.Image.Dispose()
    4. PictureBox2.Dispose()
    5. PictureBox2.Image = Nothing
    6. End If
    7. Go = True
    8. Me.Close()
    9. End Sub
    10. Private Sub extras_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    11. If System.IO.File.Exists(FormMain.Dest & "\splash.png") And Not (FormMain.Dest Is Nothing) Then
    12. PictureBox2.Image = New Bitmap(FormMain.Dest & "\splash.png")
    13. PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage
    14. splashscreen = FormMain.Dest & "\splash.png"
    15. End If
    16. End Sub


    Code sieht jetzt so.
    Löst das Problem aber nicht

    VB.NET-Quellcode

    1. If extras.CheckBox3.Checked Then
    2. Using strp As New System.IO.FileStream(extras.splashscreen, IO.FileMode.Open)
    3. Using bmp As Bitmap = New Bitmap(strp)
    4. Dim width As Integer = 1280
    5. Dim height As Integer = 720
    6. Using resultp1 As New Bitmap(width, height, Imaging.PixelFormat.Format24bppRgb)
    7. Using picture As Graphics = Graphics.FromImage(resultp1)
    8. picture.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed
    9. picture.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
    10. picture.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
    11. picture.DrawImage(bmp, 0, 0, resultp1.Width, resultp1.Height)
    12. picture.Dispose()
    13. resultp1.Save(Dest & "\splash1.png")
    14. resultp1.Dispose()
    15. End Using
    16. End Using
    17. End Using
    18. End Using
    19. System.IO.File.Delete(Dest & "\splash.png") 'Der Prozess kann nicht auf die Datei "splash.png" zugreifen, da sie von einem anderen Prozess verwendet wird.
    20. FileSystem.Rename(Dest & "\splash1.png", Dest & "\splash.png")
    21. End If

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „cuese3“ ()

    cuese3 schrieb:

    Löst das Problem aber nicht

    Da hast Du natürlich recht - allerdings würde ich mit der Problemsuche eher vor Deinem Rechner beginnen als dortdrin.

    Du hast für Deinen zuerst veröffentlichten (Spaghetti-)code eine Lösung erhalten, jetzt lieferst Du Code nach in dem Du die monierte Datei auch sperrst. Vielleicht führst Du Dir mal ein vernünftiges Grundlagenbuch zu Gemüte und fängst an sauber zu programmieren.

    Dann kannst Du - was mich betrifft - gerne wieder fragen.
    Ja,hat auch nicht funktioniert.Aber Danke,dass du noch versuchtst zu helfen.

    Hab es jetzt anders gelöst.

    Das Problem lag an den Pictureboxen in der 'extras' Form.
    Zwar wurden beide Disposed,aber das wollte nicht funktionieren.
    Also hab ich es ganz einfach mit Buttons anstatt mit Pictureboxen gelöst.
    Die Pictureboxen waren nur als Vorschau da.