Format Print fișier XPS (XML Paper Specification), puteți utiliza metoda AddJob supraîncărcare fără deschiderea PrintDialog sau, în principiu, toate interfața cu utilizatorul.
În plus, formatul de fișier de imprimare XPS (XML Paper Specification), puteți utiliza metoda de scriere și obiectul WriteAsync XpsDocumentWriter. Pentru mai multe informații despre aceasta, consultați. Imprimarea unui document XPS.
Un alt mod de a imprima XPS format (XML Paper Specification) este de a utiliza metoda PrintDocument sau controlul PrintVisual PrintDialog. Cm. Partitionati Un ghid practic. Apelați caseta de dialog de imprimare.
Mai jos sunt pașii de bază ale metodei de utilizare AddJob (String, String, Boolean) cu trei parametri. Exemplul următor conține informații detaliate.
Determinați dacă imprimanta este o imprimantă Xpsdrv. (Pentru mai multe informații despre driverul Xpsdrv cm., A se vedea de imprimare înțelegere.)
Dacă imprimanta nu este o imprimantă Xpsdrv, setați unitatea de flux pe un singur fir.
Creați o instanță a obiectului coadă server de imprimare și de imprimare.
Apelați metoda prin specificarea numelui de locuri de muncă, dosarul pentru imprimare, și steagul boolean. indicând dacă imprimanta este o imprimantă Xpsdrv.
În exemplul prezentat mai jos, arată cum se efectuează imprimarea lot a catalogului XPS fișiere. Deși aplicația solicită utilizatorului pentru a specifica un director, metoda cu trei parametri AddJob (String, String, boolean) nu are nevoie de o interfață de utilizator. Metoda poate fi folosită în nici un fel codul în cazul în care există XPS numele fișierului și calea, pe care le poate referi la ea.
Metoda de suprasarcină AddJob (String, String, Boolean) cu trei parametri pentru AddJob fi realizată într-o singură unitate filetată, atunci când parametrul boolean ia valoarea false. el ar trebui să ia atunci când utilizați imprimanta nu este Xpsdrv. Cu toate acestea, starea implicită a unității Microsoft .NET este multi-threaded. Acest lucru este implicit ar trebui să fie anulată, deoarece exemplu presupune că utilizați imprimanta nu este Xpsdrv.
Există două moduri de a modifica valoarea implicită. Una dintre ele este o adăugare simplă STAThreadAttribute (adică "[System.STAThreadAttribute ()]") imediat deasupra primului rând metoda de aplicare principală (de obicei, "static void Main (string [] args)"). Cu toate acestea, multe aplicații necesită ca metoda principală a avut unitate condiție MultiStream, astfel încât există o a doua metodă: o cameră de invocare a metodei AddJob (String, String, boolean) un set de stat flux separat ale cărui unități de STA. SetApartmentState metoda. În exemplul dat mai jos, se utilizează această a doua metodă.
Prin urmare, exemplul incepe cu instanta obiect fir crearea și transmiterea acesteia ca metodă parametru PrintXPS ThreadStart. (Metoda PrintXPS definită mai târziu în acest exemplu). Apoi, fluxul este setat la unitatea de un singur fir. Noul fir se execută codul de metodă numai rămasă principală.
Esența exemplelor conținute în metoda staticBatchXPSPrinter.PrintXPS. După crearea coada de imprimare și metoda serverul solicită utilizatorului să selecteze directorul care conține fișierele XPS. După verificarea existenței unui director, iar prezența în ea xps metodă adaugă fiecare fișier fișierul în coada de imprimare. Se presupune că imprimanta nu acceptă Xpsdrv, astfel încât să treacă AddJob fals metoda ultimul parametru (String, String, boolean). Din acest motiv, metoda va verifica marcajul XPS în fișierul înainte de a încerca să-l transforme într-o descriere a paginii de limbă a imprimantei. Dacă testul eșuează, o excepție este aruncată. Codul de probă va primi o excepție, acesta va notifica utilizatorul și pentru a trece la următorul fișier XPS.