我使用旧的System.Drawing.Printing名称空间中提供的方法进行打印,因为PrintDocument对象提供了一个PrintPage事件,它允许我加载图像并立即处理它。尝试使用FixedDocument打印通常会导致内存不足。
然而,我遇到了一个奇怪的问题-一旦打印应用程序对页面进行了假脱机处理,我就使用EndPrint事件处理程序关闭它。如果我只是调用Close(),我的打印文档有时会出现缺页或打印机输出模糊(超时/语法)错误。
我目前的变通方法是调用Hide(),然后在关闭它之前等待任意的时间(在我的例子中是30秒),这似乎是有效的。
我真的不喜欢这种方法--你怎么知道要等多长时间?难道EndPrint不应该确保最后一页已经假脱机吗?
有没有人想出一个“合适”的修复方法?或者解释到底是怎么回事?
干杯
发布于 2021-08-20 07:54:03
不要使用此事件来捕获打印结束。我已经通过异步打印调用实现了应用程序的正确完成,并通过System.Threading.Tasks.Task类的等待方法等待它完成。
// Start print asynchronously
System.Threading.Tasks.Task PrintTask = new System.Threading.Tasks.Task(new Action(PD.Print));
PrintTask.Start();
// Wait
PrintTask.Wait();
// End of application
System.Environment.Exit(0);https://stackoverflow.com/questions/12688496
复制相似问题