我有许多需要打印的JPG图片,然后将其删除。 Print方法是这样的:
public void PrintJPG()
{
PrintDocument pd = new PrintDocument();
for (int i = 0; i < this.PathsJPG.Length; i++)
{
currentpath = getCurrentPath(i);
pd.PrintPage += PrintPage;
pd.Print();
}
}
public static void PrintPage(object o, PrintPageEventArgs e)
{
System.Drawing.Image i = System.Drawing.Image.FromFile(currentpath);
Rectangle m = e.MarginBounds;
if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) //
{
m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width);
}
else
{
m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height);
}
e.Graphics.DrawImage(i, m);
}
删除方法是这样
public void DeleteGenerateDoc()
{
FileInfo file;
foreach( string path in JpgPath)
{
file = new FileInfo(path);
file.Delete();
}
}
主要是这样:
static void Main(string[] args)
{
string[] PathJPG = array with path of the jpg files // here is a function that return a array of jpg paths
PrintJPG();
DeleteGenerateDoc();
}
问题是我必须等待完成打印然后删除文档。我必须在代码中添加什么才能使程序等待打印完成,然后删除jpg文件?
答案 0 :(得分:0)
我认为PrintDocument.Print()方法仅将文档发送到打印机队列。它不等待它实际打印。
但是您可以使用PrintDocument.EndPrint事件在页面打印后得到通知。您可以使用通知删除每个文件,然后将其打印出来。这是我以前的建议。
但是,如果您的程序仅执行此任务然后退出,则仍然无法运行。在这种情况下,您需要停止执行直到完成。这有点棘手,但是应该可以使用CountdownEvent来实现。
在您的情况下,可能看起来像这样:
stage.setFullScreen(true);
最后一行应阻塞您的程序,直到打印完所有页面为止。之后,您应该可以删除文件。