AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Thread Problem?

Ein Thema von zeras · begonnen am 9. Mai 2020 · letzter Beitrag vom 13. Mai 2020
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.308 Beiträge
 
Delphi 10.3 Rio
 
#1

Thread Problem?

  Alt 9. Mai 2020, 18:30
Delphi-Version: 10.3 Rio
Hallo,

ich suche nach der Ursache eines Fehlers, wobei ich vermute, dass es mit einem Thread zu tun hat.
Zum Thema:
Wir haben auf Arbeit ein Programm, welches u.a. mittels integrierten Python Dateien manipuliert und diese dann wieder abspeichert. Das funktioniert sehr gut. Python wird genutzt, damit man auf verschiedene Parameter reagieren kann.
Nennen wir es Programm1.
Da die Funktionen des Öfteren benötigt wird, habe ich ein Programm2 geschrieben, welches die Funktionalität von Programm1 nutzt. Es ruft Programm1 in einem Thread auf und wartet, bis das Programm1 beendet ist. Danach werden die manipulierten Dateien gesichert.
Nun kommt es vor, dass Programm1 abstürzt.
Was ich bis jetzt herausgefunden habe ist, dass wenn man in den Python Scripts bei Dateioperationen sleep einbaut, dass es vermeintlich besser läuft. Ich könnte mir vorstellen, dass es zu Konflikten mit Dateien kommt, dass beispielsweise eine Datei kopiert wird, aber schon darauf zugegriffen wird.
Kann es sein, dass wenn das Programm1 in einen Thread läuft, dass dann vielleicht anders reagiert, als wenn man das Programm1 einfach nur startet.

Ist das verständlich?
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 9. Mai 2020 um 18:57 Uhr) Grund: weitere Infos eingebaut
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.297 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Thread Problem?

  Alt 9. Mai 2020, 18:35
Was ist "Programm" - Ein eigener Prozess?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.308 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Thread Problem?

  Alt 9. Mai 2020, 18:44
Was ist "Programm" - Ein eigener Prozess?
Programm1 wird als separater Thread vom Programm2 aufgerufen.
Reicht das als Info?
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
769 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Thread Problem?

  Alt 9. Mai 2020, 20:39
Ich denke nicht.
Es ist noch viel unklar. Wie bekommst ihr das Python den in Delphi rein?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.308 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Thread Problem?

  Alt 9. Mai 2020, 22:35
Vielleicht noch weitere Infos.

Programm1 startet verschiedene Python Scripte. Diese werden abgearbeitet und fertig. Alles OK.
Programm2 startet Programm1 und übergibt auch die gleichen Python Scripte.
Der Unterschied meines Erachtens ist, dass das Programm1 im Hauptthread läuft, das Programm2 als separater Thread im Programm2.
Das Programm2 startet einen Thread mit einer Schleife, die das Programm1 immer wieder mit neuen Parametern startet.
Die Scripte verarbeitet aber immer das Programm1.

Programm1 (ein fertiges Programm, kein Delphi, hier kann nichts geändert werden)
- Programm1 lädt Scripte und führt diese aus. Nach Info meiner Kollegen gibt es keine Probleme.

Programm2 (Delphi Programm, hier kann ich eventuell etwas ändern)
- Programm2 startet
- erzeugt einen Thread, der unabhängig vom UI Thread läuft
- Dateien werden bereitgestellt
- Programm1 wird mit Parameter (Python Scripte) gestartet. Hier werden die Python Scripte verarbeitet. Wenn ich in den Scripten zwischen den Dateimanilulationen immer ein sleep einbaue, scheint das sauber durchzulaufen. Deshalb hier die Frage, ob alles sequenziell verarbeitet wird, oder vielleicht ein Handle noch auf eine Datei zeigt, die vielleicht schon gelöscht wurde. Kann man sicher sein, dass alles sequenziell verarbeitet wird?
- Programm1 ist fertig
- Dateien werden gesichert
- Thread beginnt von vorn mit neuen Daten
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.457 Beiträge
 
Delphi 5 Professional
 
#6

AW: Thread Problem?

  Alt 9. Mai 2020, 23:36
Etwas Grundsätzliches zu den Begrifflichkeiten: Programme arbeiten immer in ihren eigenen Prozessen, und niemals in Threads anderer Programme/Prozesse. Jeder Prozess hat seine eigenen Threads. Selbst wenn man dieselbe EXE mehrfach startet, hat jeder Prozess seine eigenen Threads. Klar, es gibt DLL Injection und andere Spielchen, aber selbst dann läuft kein Prozess von Programm 2 als Thread von Programm 1. Prozesse und Threads sind verschiedene Dinge, erstere enthalten letztere, aber niemals umgekehrt.

Grüße
Dalai
  Mit Zitat antworten Zitat
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
66 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Thread Problem?

  Alt 10. Mai 2020, 15:53
Auch wenn ich erstmal nicht davon ausgehe das es am Zusammenspiel zwischen den beiden Programmen liegt, kannst Du mal den Code zeigen mit dem du Programm1 aufrufst? Bzw. wie du es realisiertst das Du auf das Ende von Programm1 wartest.

Ich habe bei mir auch einen Fall bei dem ich auf ein externes Programm warten muss. Das Programm läuft unterschiedlich lange und speichert dann eine Datei. Um nicht bis in alle Ehweigkeit zu warten gibt es einen Timeout, dann muss der Nutzer ran und muss die Daten von Hand einsammeln und auswerten.

Gibt Programm1 irgendwohin Statusmeldungen aus? In die Console? Die könnte man umleiten und auswerten.
Steht irgendwas im Windows Anwendungslog?
Stefan
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Jetzt rächt sich die Natur und tötet uns.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.308 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Thread Problem?

  Alt 12. Mai 2020, 18:53
Danke für eure Infos.
Es ist offenbar schwierig zu umschreiben.

Meine Frage war eigentlich, ob sich ein Programm anders verhält, wenn man es einfach so startet oder ob man es in einen Thread packt und dort werkeln läßt. Vielleicht gibt es Threadeinstellungen, die ich nicht kenne.
Mittlerweile habe ich weitere Tests machen können und in dem Python Script, welches im Programm ausgeführt wird, eine Änderung vorgenommen. Offenbar gibt es im Programm Überschneidungen mit Schliessen von Dateien und dem gleichzeitigem Zugriff.
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
830 Beiträge
 
#9

AW: Thread Problem?

  Alt 13. Mai 2020, 11:46
Meine Frage war eigentlich, ob sich ein Programm anders verhält, wenn man es einfach so startet oder ob man es in einen Thread packt und dort werkeln läßt. Vielleicht gibt es Threadeinstellungen, die ich nicht kenne.
Mittlerweile habe ich weitere Tests machen können und in dem Python Script, welches im Programm ausgeführt wird, eine Änderung vorgenommen. Offenbar gibt es im Programm Überschneidungen mit Schliessen von Dateien und dem gleichzeitigem Zugriff.
Wie Dalai bereits sagte, spielt es keine Rolle, ob du das Programm direkt aus dem Mainthread oder aus einem anderen Thread heraus startest. Das gestartete Programm läuft immer in seinem eigenen Thread/Prozess. Das einzige was du machen kannst, auf des Ende dieses Prozesses warten. Solltest du allerdings den Prozess aus deinem Mainthreat gestartet haben und auf dessen Ende warten, wird deine GUI nur noch wenig reagieren.

Ansonsten musst du natürlich selber darauf achten, dass du nicht noch irgendwelche Handles auf Datei offen hast.

Und solltest du verschiedene externe Programme oder Pythonscript aus verschiedenen Threads heraus starten, ist das abstimmen des Timings natürlich schwieriger und es kann sehr schnell zu Dateizugriffsproblemen kommen.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf