Hallo zusammen,
ich habe den Auftrag eine bestehende Anwendung in zu erweitern. Es geht um eine Anwendung für eine Anlage durch die diverse Werkstücke laufen, auf welche ein Aufdruck aufgebracht wird. Der Drucker dazu wird durch den Leitrechner, bzw durch das Programm angesteuert. Die Erweiterung besteht daraus, eine Auftragsnummer in eine SQL-Tabelle zu schreiben(Rückmeldung). Ganz grob gesagt gibt es zwei Subs (HandleDrucker und HandleRückmeldung).
Diese beiden Subs werden zyklisch durch einen Timer (Intervall: 1s) aufgerufen.
Das Problem besteht darin, dass HandleDrucker in der Ausführung ca. 5s benötigt und HandleRückmeldung ca. 1s.
Die Werkstücke kommen gerade so in einem Abstand von ca. 6s an den entsprechenden Punkten in der Anlage an. Nun besteht seit der Erweiterung, das Problem, dass der Drucker in unregelmäßigen Abständen Daten verschluckt und der Aufdruck nicht immer zum Werkstück passt.
Die HandleDrucker-Sub möchte ich nicht ändern, da diese schon seit vielen Jahren funktioniert hat und durch einen externen Entwickler geschrieben wurde. Im Endeffekt wird darin ein Handshake mit der Steuerung (SPS) abgearbeitet, die Daten werden von einem SQL-Server geholt, aufbereitet und per TCP/IP an den Drucker geschickt.
Meine Idee wäre also nun, die HandleRückmeldung in einen Backgroundworker zu schieben. Würde mir das prinzipiell einen zeitlichen Vorteil verschaffen? Also würde er wirklich parallel zur restlichen Anwendung laufen?
Ist vielleicht auch etwas Anderes ratsam (Async/Await, Multithreading)?
Zum Backgroundworker hätte ich auch noch eine weitere Frage: Wenn er läuft, und es würde in dieser Zeit ein weiteres Werkstück eintreffen, welches rückgemeldet werden soll, wird es dann "verschluckt" oder müsste ich für diesen Fall einen weiteren Backgroundworker vorhalten, um den Job abzuarbeiten?
Was noch interessant sein könnte: verwendet wird Net-Framework 2.0
Ich würde also nur gern wissen, was in einem solchen Fall empfehlenswert ist. Die Theorie zur jeweiligen Technik werde ich mir dann selbst erarbeiten.
Schon einmal Danke an der Stelle für Rückmeldungen.
ich habe den Auftrag eine bestehende Anwendung in zu erweitern. Es geht um eine Anwendung für eine Anlage durch die diverse Werkstücke laufen, auf welche ein Aufdruck aufgebracht wird. Der Drucker dazu wird durch den Leitrechner, bzw durch das Programm angesteuert. Die Erweiterung besteht daraus, eine Auftragsnummer in eine SQL-Tabelle zu schreiben(Rückmeldung). Ganz grob gesagt gibt es zwei Subs (HandleDrucker und HandleRückmeldung).
Diese beiden Subs werden zyklisch durch einen Timer (Intervall: 1s) aufgerufen.
Das Problem besteht darin, dass HandleDrucker in der Ausführung ca. 5s benötigt und HandleRückmeldung ca. 1s.
Die Werkstücke kommen gerade so in einem Abstand von ca. 6s an den entsprechenden Punkten in der Anlage an. Nun besteht seit der Erweiterung, das Problem, dass der Drucker in unregelmäßigen Abständen Daten verschluckt und der Aufdruck nicht immer zum Werkstück passt.
Die HandleDrucker-Sub möchte ich nicht ändern, da diese schon seit vielen Jahren funktioniert hat und durch einen externen Entwickler geschrieben wurde. Im Endeffekt wird darin ein Handshake mit der Steuerung (SPS) abgearbeitet, die Daten werden von einem SQL-Server geholt, aufbereitet und per TCP/IP an den Drucker geschickt.
Meine Idee wäre also nun, die HandleRückmeldung in einen Backgroundworker zu schieben. Würde mir das prinzipiell einen zeitlichen Vorteil verschaffen? Also würde er wirklich parallel zur restlichen Anwendung laufen?
Ist vielleicht auch etwas Anderes ratsam (Async/Await, Multithreading)?
Zum Backgroundworker hätte ich auch noch eine weitere Frage: Wenn er läuft, und es würde in dieser Zeit ein weiteres Werkstück eintreffen, welches rückgemeldet werden soll, wird es dann "verschluckt" oder müsste ich für diesen Fall einen weiteren Backgroundworker vorhalten, um den Job abzuarbeiten?
Was noch interessant sein könnte: verwendet wird Net-Framework 2.0
Ich würde also nur gern wissen, was in einem solchen Fall empfehlenswert ist. Die Theorie zur jeweiligen Technik werde ich mir dann selbst erarbeiten.
Schon einmal Danke an der Stelle für Rückmeldungen.