Ich mache eine Verknüpfung von mehreren Multi-Image-TIFF-Dateien zu einer einzigen Multi-Image-TIFF-Datei und ein Problem mit dem Löschen der Quell-TIFF-Dateien, da die Klasse Bild weiterhin den Griff auf ihnen halten.Verwendung von Image.FromFile nicht Handle für eine Datei
Ich bin ein TIFF-Bild durch Image.FromFile Lesen:
Bitmap resultTiff = (Bitmap) Image.FromFile(strImageFile);
Nach dem ich alle anderen TIFF-Bilder auf die gleiche Weise lesen und hängen Sie sie an dem resultierenden TIFF-Bild.
Als ich beende ich diesen Code verwenden Verweise zu lösen und die daraus resultierende Datei zu speichern:
ep.Param[0] = new EncoderParameter(enc, (long) EncoderValue.Flush);
resultTiff.SaveAdd(ep);
resultTiff.Dispose();
Nun ist das Problem, dass der Griff auf die Dateien existiert noch (und daher Dateien können nicht gelöscht werden) außer ich rufe den GC.Collect()
nach dem resultTiff.Dispose()
Anruf an.
Sie können sich vorstellen, dass ich mich nicht sehr wohl fühle, wenn ich GC anrufe. Gibt es einen anderen Weg, dies zu erreichen?
+1 für diese Antwort. 'Image.FromFile' macht nicht immer genau das Richtige. Ersetzen Sie es, indem Sie einen Dateistrom manuell öffnen und dann die Bitmap von dort laden, gibt Ihnen etwas mehr Flexibilität. – stakx
Aus irgendeinem Grund gab 'FileStream' mir immer noch das gleiche Problem. Stattdessen habe ich Image.FromStream (new MemoryStream (File.ReadAllBytes (path))) verwendet, was gut funktioniert hat. – William