我正在使用WinForms
。在我的表單中,我有一個按鈕可以打印目錄中的所有tif圖像。如果打印作業被取消或打印完成,我想告訴我的應用程序釋放圖像。我認爲FileInfo可能是這裏的問題。我怎樣才能完成這項任務?當使用它完成應用程序時釋放該文件
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;
}
如果我添加這行代碼它釋放圖像。它工作,如果我點擊一次按鈕。但是,如果我想按下打印按鈕第二次printPreviewDialog1.Show();
拋出一個錯誤:
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;
}
例如,如果我取消打印,然後轉到文件瀏覽,刪除/重命名/修改這個文件我下面的錯誤。 目前我必須關閉我的應用程序,然後我可以修改tif文件。
我可能沒有明確,我只想告訴應用程序,我不不想再使用這些文檔,所以我不會這個Windows錯誤:行動不能完成,因爲該文件在另一個應用程序中打開。 – taji01