Ich habe folgende Situation:
Ich starte in einem Programm automatisch
einen Druckauftrag für den PDFCreator. Die erzeugte PDF-Datei soll von
dem Programm jedesmal einen Namen für die PDF-Datei vorgegeben bekommen.
Dafür
habe ich das Beispiel TestPage2PDF.js so modifiziert, dass es einen
Dateinamen übergeben bekommt und auf den Druckauftrag wartet.
Ich
starte also in meinem Programm TestPage2PDF.js und übergebe einen
Dateinamen. Dann starte ich den Druckauftrag. Das funktioniert auch wie
gewünscht.
Mein Problem ist jetzt: Es kann passieren, dass das
Programm 2 Druckaufträge nahezu zeitgleich anstoßen muss (also während
TestPage2.PDF noch auf den Druckauftrag wartet). D.h. es muss auch 2 mal
die TestPage2PDF.js angestoßen werden. Leider geht das nicht, da dann
ja bereits eine Instanz vom PDFCreator ausgeführt wird.
Gibt es für mein Problem eine Lösung?
Vielen Dank im Voraus
Hallo,
if(PDFCreatorJobQueue.WaitForJobs(n))
{
DoWork()
Ich hoffe, dass das weiterhilft

Grüße,
Sazan
Vielen Dank für die Antwort.
Leider kenne ich die Zeitpunkte nicht. Die Zeitpunkte werden durch Benutzeraktionen ausgelöst.
Es kann also passieren, dass das Script angestoßen wird und 1 Auftrag gedruckt werden soll. Nun kann aber 1 s später plötzlich der nächste Anstoß kommen und das Script würde noch mal angestoßen werden. Das funktioniert dann jedoch nicht, da die Instanz noch offen ist (vom 1. Anstoß).
Die einzige derzeit zur Verfügung stehende Möglichkeit, dieses Problem zu umgehen, wäre folgende: Sie nutzen vom PDFCreator-Objekt (ProgID: “PDFCreatorBeta.PDFCreator”) die IsInstanceRunning Property, um abzufragen, ob denn noch das Skript vom ersten Anstoß läuft.
IsInstanceRunning liefert True, falls eine andere PDFCreator Instanz arbeitet (im obigen Beispiel würde es also True zurückliefern nach dem erstmaligen Anstoß des Skriptes) und False andernfalls.
Also fragt man immer bevor man das Skript ein weiteres mal Anstößt, ob denn noch eine Instanz vom PDFCreator gerade läuft, falls das Ergebnis dieser Abfrage von IsInstanceRunning True ist, dann wartet man (je nach Druckauftragsmänge vielleicht n*3 Sekunden oder so etwas) und probiert es erneut.
PseudoCode: