WPF распечатать документ в фоновом режиме - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть приложение wpf в реальном времени, и иногда мне нужно распечатать документ на локальном принтере.Это часть моего кода:

using (PrintDocument prnDocument = new PrintDocument())
{
    prnDocument.PrintPage += new PrintPageEventHandler(prnDocument_PrintPage);

    if (!string.IsNullOrEmpty(printFile))
    {
        ImageFormat format = ImageFormat.Png;
        float scale = 1;                            // Convert.ToSingle(_Scale.Value) / 100f;
        long quality = 75;                          // Convert.ToInt64(_Quality.Value);
        //string output = "";                       // _TextBoxOutput.Text;

        PaperSize ps = new PaperSize("label", panel.Width, panel.Height);
        panel.BorderStyle = panelBorder ? BorderStyle.FixedSingle : BorderStyle.None;
        prnDocument.DefaultPageSettings.PaperSize = ps;
        prnDocument.DefaultPageSettings.Margins.Left = 0;
        prnDocument.DefaultPageSettings.Margins.Top = 0;
        PrintController controller = new PrintControllerFile(format, scale, quality, printFile);
        prnDocument.PrintController = new PrintControllerWithStatusDialog(controller, "Exporting");
    }
    else
    {
        PaperSize ps = new PaperSize("label", panel.Width, panel.Height);
        panel.BorderStyle = panelBorder ? BorderStyle.FixedSingle : BorderStyle.None;
        prnDocument.DefaultPageSettings.PaperSize = ps;
        prnDocument.DefaultPageSettings.Margins.Left = 0;
        prnDocument.DefaultPageSettings.Margins.Top = 0;

        if (!string.IsNullOrEmpty(printerName))
            prnDocument.PrinterSettings.PrinterName = printerName;

        prnDocument.PrintController = new StandardPrintController();
    }

    prnDocument.Print();
}   

По сути, каждый раз, когда вызывается Print (), мое приложение останавливается до 2-3 секунд, а затем возобновляется.Я думаю, что за это время я отправляю данные в спулер печати.Я также попытался использовать поток:

System.Threading.Tasks.Task.Run(() => { prnDocument.Print(); });

Но, похоже, ничего не изменилось.Любой совет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...