Autor Beitrag
watwerbistdudenn
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 12.09.09 10:49 
Hallo zusammen,

ich suche nach einer Möglichkeit die Druckaufträge zu überwachen.

Ich setzte einen Druckerserver ein auf dem über 100 Drucker installiert und freigegeben sind die Sich die Mitarbeiter einbinden.

Mein Versuch war es die Druckerwarteschlangen des Druckserver auszuwerten was aber viel zu lange dauert und dadruch Drucke mit einer Seite teilweise nicht ausgewertet werden.
Dazu habe ich Klassen aus dem System.Printing Namespace genommen.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
        private List<PrintJob> gibPrintJobs()
        {
            //gib den Printserver
            PrintServer myPrintServer = new PrintServer(@"\\servername");
            List<PrintJob> liste = new List<PrintJob>();
            //gib alle Druckerwarteschlangen aus.
            PrintQueueCollection myPrintQueues = myPrintServer.GetPrintQueues();
            while(true)
            {
                listView1.BeginUpdate();
                //druchlaufe alle Druckerwarteschlangen
                foreach (PrintQueue pq in myPrintQueues)
                {
                    pq.Refresh();
                    PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection();
                    //durchlafe alle Druckaufträge für jeden Drucker
                    foreach (PrintSystemJobInfo job in jobs)
                    {
                        ListViewItem lv = new ListViewItem();
                        lv.Text = job.Submitter;
                        lv.SubItems.Add(Convert.ToString(job.NumberOfPages));
                        listView1.Items.Add(lv);                         
                    }
                }
                listView1.EndUpdate();
            }
            return liste;
        }



Könnte mir jemand ein Tipp geben wie ich das efizienter lösen kann.

Ich könnte das Tool auch auf dem Druckserver laufen lassen, das wäre nicht das Problem.

Vielen Dank schon einmal.

Grüße
Ralf
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 12.09.09 12:48 
Hallo,

wirklich helfen kann ich nicht. Es kommt mir aber seltsam vor, dass du in eine Aufgabe, die eine Liste verarbeiten soll, direkt eine ListView einbindest. Das widerspricht dem NET-Grundsatz, Daten und GUI zu trennen; außerdem gehört die ListView wohl zu den Controls, die am schwierigsten (langsamsten) zu verarbeiten sind.

Meine Empfehlung lautet, zunächst die List<PrintJob> zusammenzustellen und getrennt davon die Anzeige zu behandeln.

Vielleicht hilft das schon weiter. Gruß Jürgen