C# WPF赢得';大部分时间都不能打印

C# WPF赢得';大部分时间都不能打印,c#,wpf,printing,C#,Wpf,Printing,我是WPF的初学者,我在打印方面有这个问题。我使用以下代码: public static void PrintImageFile(string ImagePath, int ImageCopyCount, PageOrientation ImagePageOrientation = PageOrientation.Unknown, PrintQueue Printer = null, string PrintingName = "") {

我是WPF的初学者,我在打印方面有这个问题。我使用以下代码:

    public static void PrintImageFile(string ImagePath, int ImageCopyCount, PageOrientation ImagePageOrientation = PageOrientation.Unknown, PrintQueue Printer = null, string PrintingName = "")
    {            
        PrintDialog printDialog = SetPrintDialog(ImageCopyCount, ImagePageOrientation, Printer);
        BitmapImage imageToPrint = BitmapImageFromPath(ImagePath);
        PrintCapabilities capabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
        Size size = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
        DrawingVisual drawingVisualToPrint = BitmapImageToDrawingVisual(imageToPrint, size);

        try
        {
            printDialog.PrintVisual(drawingVisualToPrint, PrintingName);
        }
        catch (Exception e)
        {
            Info("Error in PrintImageFile : " + e.Message);
        }
    }
问题是它不会在大多数时间打印。在这些情况下,打印作业会在打印机的打印作业列表中短暂显示,然后消失。没有任何类型的错误消息,程序的行为就好像从未执行过PrintVisual一样。 但是,大约6-7次中有1次,打印完全按照预期进行

否则打印机工作正常

我花了很多时间试图理解这一点,我没有看到任何人有同样的问题。
谢谢。

我已经找到了这种行为的原因

这是由于程序使用清单以管理员身份自动执行而导致的。 我不记得是从哪里弄来的,但在这里:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>

    </application>
  </compatibility>
</asmv1:assembly>

我确信这就是原因,我做了不同的测试项目。一旦我删除了项目属性(在应用程序下)中的清单,就会按预期进行打印

但仍然需要以管理员身份执行程序

有没有人有过这方面的经验


(我正在windows 7下运行调试器)

您确定drawingVisualToPrint中有内容吗?这是一个范围,但打印队列可能正在确定打印作业中没有任何内容,因此它会删除/drawingVisualToPrint有内容,这不是问题所在。