更新似乎应用程序不知道打印任务何时完成,并且无限期地保持连接打开。有没有办法杀死这个连接?
当我使用报表查看器调试wpf并打印文档时,我似乎无法完全关闭wpf。
我按下窗口上的X,窗口关闭,但vs继续运行。暂停不会显示它保持挂起的位置,并且wpf中没有任何线程。
我们覆盖了打印以跳过对话框,但尝试在运行后将所有内容设置为null并没有帮助。任何想法为什么它一直挂? (在打印之前关闭应用程序工作正常。)
这三个主题仍然有效,有没有办法找出他们为什么保持开放?
Unflagged 1424 7工作线程vshost.RunParkingWindow [管理到本机转换]正常
Unflagged 4320 8工作线程.NET SystemEvents [管理到本机转换]正常
Unflagged> 4332 9主线程主线程[管理到本机转换]正常
protected override void OnPrintCommand()
{
PrintDialog printDialog = new PrintDialog();
printDialog.PrintQueue = LocalPrintServer.GetDefaultPrintQueue();
printDialog.PrintTicket = printDialog.PrintQueue.DefaultPrintTicket;
FixedDocument fixedDocument = this.Document as FixedDocument;
FixedDocumentSequence fixedDocumentSequence = this.Document as FixedDocumentSequence;
if (fixedDocument != null) fixedDocument.PrintTicket = printDialog.PrintTicket;
if (fixedDocumentSequence!= null) fixedDocumentSequence.PrintTicket = printDialog.PrintTicket;
XpsDocumentWriter writer = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);
if (fixedDocument != null) writer.WriteAsync(fixedDocument, printDialog.PrintTicket);
if (fixedDocumentSequence != null) writer.WriteAsync(fixedDocumentSequence, printDialog.PrintTicket);
printDialog = null;
fixedDocument = null;
fixedDocumentSequence = null;
writer = null;
}
答案 0 :(得分:1)
在没有调试的情况下运行它时是否也这样做?你调用writer.WriteAsync(),当你试图关闭应用程序时它是否仍然在写?
您可能应该连接一个事件以完成writeasync方法。有关将XpsDocumentWriter与WritingCompleted回调一起使用的一个很好的示例,请参阅该链接。
答案 1 :(得分:0)
虽然扩展程序禁止弹出文档查看器,但报告仍在后台保持活动状态。
解决方案很简单,不要压制查看器,打印文档然后关闭查看器。您也可以选择在关闭之前隐藏查看器。
此修复后应用程序自动关闭。