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.