Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Bild lesen blockiert Datei?

  Alt 30. Mai 2007, 10:14
Zitat von Phoenix:
Folgendes Problemchen: Ich habe eine Funktion, die ein Bild lädt:
Enthält mehrere Ecken, an denen man sich stoßen kann...
a) Sie benötigt zuviele lokale Privilegien (mag aber vielleicht nötig sein)
b) Der Konstruktor von SD.Bitmap ist von den Redmondern furchtbar dämlich implementiert worden.
Er öffnet einen Stream, aus dem er das Bild liest, aber gibt diesen nicht sofort wieder frei.
Da sie mal wieder(Wer erinnert sich an den schrecklichen ThreadPool in 1.1? ) irgendeinen Praktikanten rangelassen haben , musst du natürlich selbst ran:
Code:
private void btnLoadImage_Click(object sender, EventArgs e)
{
  String basedir = FW.Instance.SysParams["Stammdaten.Pfade.Bilder"].Value;
  dlgOpenFile.InitialDirectory = basedir;

  if (dlgOpenFile.ShowDialog() == DialogResult.OK)
  {
    if(!Path.GetDirectoryName(dlgOpenFile.FileName) == basedir))
      someErrorProvider.SetError((Control)sender, "WTF willst du in dem Ordner?");

    edFilename.Text = Path.GetFileName(dlgOpenFile.FileName);
 
    using(Stream stream = dlgOpenFile.OpenFile())
      _image = new Bitmap(stream);

    btnPreview.Enabled = true;
  }
}
Aber mal ganz btw: War das jetzt nicht, öhm offensichtlich? Ich meine du hast mehrere Overloads des Konstruktors. Der mit dem Dateinamen ist Schrott, aber der mit dem Stream wäre doch gleich die nächste Adresse gewesen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat