В конструкторе Mainpage
у меня есть эта строка:
PrintManager.GetForCurrentView().PrintTaskRequested += OnPrintTaskRequested;
У меня есть кнопка в строке меню для печати с помощью этого обработчика события щелчка:
CanvasPrintDocument printDocument;
public async void PrintButtonClick()
{
if (printDocument != null)
{
printDocument.Dispose();
}
printDocument = new CanvasPrintDocument();
printDocument.Preview += (sender, args) =>
{
sender.SetPageCount(1);
PrintPage(args.DrawingSession, args.PrintTaskOptions.GetPageDescription(1));
};
printDocument.Print += (sender, args) =>
{
using var ds = args.CreateDrawingSession();
PrintPage(ds, args.PrintTaskOptions.GetPageDescription(1));
};
try
{
await PrintManager.ShowPrintUIAsync();
}
catch (Exception)
{
}
}
private void PrintPage(CanvasDrawingSession ds, PrintPageDescription printPageDescription)
{
//
}
Эта кнопка также имеет ускоритель клавиатуры CTRL + P.
Теперь это работает для меня на моем компьютере, в режиме отладки и выпуска, без проблем.
Однако я получаю несколько sh отчетов мое приложение, которое сообщает об ошибке:
Метод был вызван в непредвиденное время.
Одновременно может быть зарегистрирован только один обработчик для события PrintTaskRequested.
Я не понимаю, как событие PrintTaskRequested
регистрируется более одного раза за раз. Поскольку код регистрации обработчика событий находится в конструкторе.
У меня нет других журналов печати c в моем приложении.
Любая помощь приветствуется. Спасибо.