Ich benutze WinForms
. In meinem Formular habe ich einen Button, der alle TIF-Bilder in einem Verzeichnis ausdruckt. Ich möchte meiner Anwendung mitteilen, dass die Bilder freigegeben werden sollen, wenn der Druckauftrag abgebrochen wird oder der Druckvorgang beendet ist. Ich denke, dass FileInfo hier wohl das Problem ist. Wie kann ich diese Aufgabe erfüllen?Geben Sie die Datei frei, wenn die Anwendung fertig ist.
List<string> DocPathList = new List<string>();
private int page;
private void btn_Print_Click(object sender, EventArgs e)
{
DirectoryInfo SourceDirectory = new DirectoryInfo(@"C:\image\Shared_Directory\Printing_Folder\");
FileInfo[] Files = SourceDirectory.GetFiles("*.tif"); //Getting Tif files
foreach (FileInfo file in Files)
{
DocPathList.Add(SourceDirectory + file.Name);
}
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.Show();
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(Image.FromFile(DocPathList[page]), e.MarginBounds);
page++;
e.HasMorePages = page < DocPathList.Count;
}
private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
{
page = 0;
}
Wenn ich diese Codezeile hinzufügen, wird das Image freigegeben. Es funktioniert, wenn ich einmal auf den Button klicke. wenn ich jedoch die Drucktaste zum zweiten Mal printPreviewDialog1.Show();
drücken wollen wirft einen Fehler:
Exception thrown: 'System.ObjectDisposedException' in System.Windows.Forms.dll
using (var image = Image.FromFile(DocPathList[page]))
{
e.Graphics.DrawImage(image, e.MarginBounds);
page++;
e.HasMorePages = page < DocPathList.Count;
}
Zum Beispiel, wenn ich meinen Druck abbrechen und dann gehen Sie zu Datei erforschen löschen/umbenennen/ändern diese Datei Ich den Fehler unten. Derzeit muss ich meine Anwendung schließen, dann kann ich die TIF-Dokumente ändern.
ich könnte nicht klar gewesen sein, ich mag die Anwendung nur sagen, dass ich don Ich möchte diese Dokumente nicht mehr verwenden, also mache ich diesen Windows-Fehler nicht: Die Aktion kann nicht abgeschlossen werden, da die Datei in einer anderen Anwendung geöffnet ist. – taji01