4

我正在使用旧System.Drawing.Printing命名空间中可用的方法进行打印,因为该PrintDocument对象提供了一个PrintPage事件,允许我加载图像并立即处理它。尝试使用 FixedDocument 进行打印通常会导致内存不足。

然而,我遇到了一个奇怪的问题——EndPrint一旦它假脱机页面,我就使用事件处理程序关闭我的打印应用程序。如果我只是调用Close()我的打印文档,有时会出现缺页或打印机输出模糊(超时/语法)错误。

我目前的解决方法有点像 hack,涉及调用Hide()然后在关闭它之前等待任意时间(在我的情况下为 30 秒),这似乎有效。

我真的不喜欢这种方法——你怎么知道要等多少时间?EndPrint 不应该确保最后一页已假脱机吗?

有人对“正确”修复有想法吗?或者解释一下是怎么回事?

干杯

4

1 回答 1

0

不要使用此事件来捕捉打印的结束。我已经通过异步打印调用实现了应用程序的正确完成,并通过 System.Threading.Tasks.Task 类的 Wait 方法等待它完成。

// 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);
于 2021-08-20T07:54:02.643 回答