Probleme beim Löschen eines Bildes

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von SpieleArenaORG.

    Probleme beim Löschen eines Bildes

    Huhu,

    ich bin momentan dabei ein etwas größeres programm zu schreiben... Schön und gut nur leider stoße ich momentan auf ein paar doofe fehlerchen...

    Das Problem:

    Ich habe ein bild das aus dem internet heruntergeladen wird und dann im Windows tmp landet und dann in eine rtb eingefügt wird.
    Leider kann ich das temporäre png bild aus dem internet das dann umgewandelt in bmp wird nicht löschen

    Ein Ausnahmefehler des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Der Prozess kann nicht auf die Datei "C:\Users\SpieleArena\AppData\Local\Temp\mcskulltmp.png" zugreifen, da sie von einem anderen Prozess verwendet wird.


    Dabei habe ich doch das bild mit

    VB.NET-Quellcode

    1. tmpimg.Dispose()
    2. img.Dispose()


    geschlossen... ?(

    Code:

    VB.NET-Quellcode

    1. RichTextBox2.Clear()
    2. While Not usertmp = useriwas
    3. Using client As New Net.WebClient
    4. Dim reqparma As New Specialized.NameValueCollection
    5. reqparma.Add("user", user)
    6. reqparma.Add("pass", pass)
    7. reqparma.Add("do", "11")
    8. reqparma.Add("uuid", arraytmp(usertmp))
    9. Dim responsebytesa = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparma)
    10. Dim username = (New Text.ASCIIEncoding).GetString(responsebytesa)
    11. Dim reqparm As New Specialized.NameValueCollection
    12. reqparm.Add("user", user)
    13. reqparm.Add("pass", pass)
    14. reqparm.Add("do", "13")
    15. reqparm.Add("name", username)
    16. Dim responsebytes = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparm)
    17. Dim bytearray() As Byte = responsebytes
    18. Dim tmpimg As Image
    19. Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(bytearray)
    20. tmpimg = System.Drawing.Image.FromStream(ms)
    21. tmpimg.Save(IO.Path.GetTempPath + "mcskulltmp.png")
    22. Console.WriteLine(IO.Path.GetTempPath)
    23. Dim img = Image.FromFile(IO.Path.GetTempPath + "mcskulltmp.png")
    24. If Not My.Computer.FileSystem.FileExists(IO.Path.GetTempPath + "mcskulls_" + usertmp.ToString + ".bmp") Then
    25. img.Save(IO.Path.GetTempPath + "mcskulls_" + usertmp.ToString + ".bmp")
    26. End If
    27. Dim Bmap As New Bitmap(IO.Path.GetTempPath + "mcskulls_" + usertmp.ToString + ".bmp")
    28. Clipboard.SetImage(Bmap)
    29. RichTextBox2.Paste()
    30. Clipboard.Clear()
    31. tmpimg.Dispose()
    32. img.Dispose()
    33. Snooze(0.5)
    34. My.Computer.FileSystem.DeleteFile(IO.Path.GetTempPath + "mcskulltmp.png")
    35. usertmp = usertmp + 1
    36. End Using
    37. End While
    38. Clipboard.Clear()

    Ich kann es grad leider nicht testen da ich unterwegs bin, aber aus dem Bauch heraus würde ich schätzen das du in Zeile 27 direkt das Bild als Bitmap verwendest, versuche evtl. mal die Zeile 27 durch

    VB.NET-Quellcode

    1. Dim Bmap As New Bitmap(Bitmap.FromFile(IO.Path.GetTempPath + "mcskulls_" + usertmp.ToString + ".bmp"))

    zu ersetzen(wie gesagt ungetestet)

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    Ich kann es grad leider nicht testen da ich unterwegs bin, aber aus dem Bauch heraus würde ich schätzen das du in Zeile 27 direkt das Bild als Bitmap verwendest, versuche evtl. mal die Zeile 27 durch

    VB.NET-Quellcode

    1. Dim Bmap As New Bitmap(Bitmap.FromFile(IO.Path.GetTempPath + "mcskulls_" + usertmp.ToString + ".bmp"))

    zu ersetzen(wie gesagt ungetestet)

    Greets


    mcskulls_X.bmp ist nicht dass problem sondern

    die mcskulltmp.png

    die kann ich nicht löschen und dass ist das Problem
    Dann ersetz mal zeile 23 durch:

    VB.NET-Quellcode

    1. Dim imgStream As New IO.FileStream(IO.Path.GetTempPath + "mcskulltmp.png", IO.FileMode.Open, FileAccess.Read)
    2. Dim img As New Bitmap(Bitmap.FromStream(imgStream))
    3. imgStream.Close()
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If