Я разрабатываю службу Windows, которая должна печатать некоторые этикетки на сетевом принтере.
Здесь http://msdn.microsoft.com/en-us/library/5ekk3hse.aspx говорит, что печать в службе Windows с использованием классов System.Drawing.Printing не поддерживается (или, скорее, не должна выполняться).
Это Печать HTML-документа из Windows Service в C # без диалогового окна печати похоже на решение, но там говорится, что для этого требуется .Net Framework 4.0, и мне нужно использовать 2.0 (или я могу изменить его) до 3.5, если я действительно, действительно должен, но тогда клиенту придется обновить, чего я хочу избежать).
Я также прочитал, что для печати из службы Windows на сетевом принтере необходима учетная запись домена для службы, которую я в любом случае использую, так что это не проблема.
Каждая настройка для принтера будет установлена в файле .config, и я надеюсь, что из-за этого пользовательский диалог не появится / не понадобится.
Мои вопросы:
Смогу ли я печатать напрямую из службы Windows, используя BackgroundWorker? Или мне нужно вызвать другое приложение (например, консольное приложение) изнутри моего сервиса и выполнить там печать (я читал в сети, что некоторые люди используют это решение, но я не нашел ни одного примера кода)
Кроме того, я не очень хорошо разбираюсь в потоках и работаю с BackgroundWorkers, поэтому кто-нибудь может дать мне пример, как я могу это сделать (у меня есть запросы на печать, поступающие асинхронно. Как я могу напечатать их, не теряя их?) Является ли BackgroundWorker лучшим решением или есть несколько лучших способов сделать это?