У меня есть приложение 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(); });
Но, похоже, ничего не изменилось.Любой совет?