私は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ドキュメントを変更することができます。
を、私はちょうど私ドンアプリケーションをお伝えしたいと思いますこれらのドキュメントをもう使用したくないので、このウィンドウエラーはありません。ファイルが別のアプリケーションで開いているため、アクションは完了できません。 – taji01