我们可以在 C# 中使用单独的线程从 Windows 应用程序打印吗?
Posted
技术标签:
【中文标题】我们可以在 C# 中使用单独的线程从 Windows 应用程序打印吗?【英文标题】:Can we do Print from the Windows Application in C# with separate thread? 【发布时间】:2019-12-13 19:54:57 【问题描述】:我有一个使用打印功能的应用程序。 我使用单独的线程来打印文档,即通过将 Print 发送到 Microsoft XPS Document Writer 将其转换为 XPS。
我尝试在单独的线程以及主 UI 线程中打印多个文档。但是在后台打印时,应用程序崩溃并且事件查看器显示访问权限问题。
当我尝试在主线程(即 UI 线程)中打印多个文档时,应用程序会显示“打印”对话框。
我想在没有任何打印对话框的情况下静默打印文档。
当我在调试模式下构建它时,我的代码运行良好,但是当我在发布模式下构建它时它显示打印对话框。
谢谢。
【问题讨论】:
My code works perfectly fine
那么代码是什么?
@sLw 当我在调试模式下构建应用程序时,它正在静默打印文档。但是当我在发布模式下构建应用程序时,它会显示打印对话框。我已经更新了问题
【参考方案1】:
我使用单独的线程来打印文档
我没有看到您的代码,但通常可以在您的应用中使用 Task 来分隔任务
例如:
var tasks1 = Task.Run(() => PrintDoc(); );
但在后台打印时,应用程序崩溃了
也许它取决于其他线程的变量,或者它需要打印一个尚不可用或正在其他地方使用的文件
我想在没有任何打印对话框的情况下静默打印文档。
您需要在打印文档之前使用 PrintController
doc.PrintController = new System.Drawing.Printing.StandardPrintController();
【讨论】:
以上是关于我们可以在 C# 中使用单独的线程从 Windows 应用程序打印吗?的主要内容,如果未能解决你的问题,请参考以下文章