Forum: Programmieren allgemein
by Uwe Raabe,
8. Jan 2021
Das geht mit ITask auch. Problematisch ist hier nur der Synchronize-Aufruf im Task-Thread, der mit dem Wait im Hauptthread zu einem Deadlock führt. Ohne geeignete Maßnahmen wäre das mit einem TThread auch so.
Forum: Programmieren allgemein
by Uwe Raabe,
8. Jan 2021
Neuer Versuch, der sich mehr an meinem (bislang jedenfalls funktionierenden) Code orientiert.
Ich vermute, das eigentliche Problem ist das Halten des ITask-Interfaces, was ich in meinem Code eigentlich nie mache.
Forum: Programmieren allgemein
by Uwe Raabe,
8. Jan 2021
Nein, aber ich. Wenn das Form freigegeben wird, dann auch die Wrapper-Instanz - auch wenn die Task noch nicht fertig ist. In meinen Anwendungsfällen hält die Task indirekt selbst noch ein anderes Interface auf den Wrapper, aber dabei geht es auch um eine ganz andere Anforderung.
Multi-Threading bleibt halt schwierig...
Forum: Programmieren allgemein
by Uwe Raabe,
8. Jan 2021
Ich weiß ja nicht, ob das für den realen Anwendungsfall passt, aber in solchen Fällen verwende ich dann ein Zwischenobjekt. Ich hab da mal was vorbereitet...
Forum: Programmieren allgemein
by Uwe Raabe,
8. Jan 2021
Wenn das Form und seine Komponenten schon weg sind (ich vermute, das heißt freigegeben), dann kann Assigned(Button1) immer noch True liefern, obwohl der Zugriff darauf dann auf undefiniertem Speicher erfolgt. Das kann dann gut gehen - muss aber nicht.
Forum: Programmieren allgemein
by Uwe Raabe,
7. Jan 2021
Probier doch mal statt Synchronize ein Queue.
Forum: Programmieren allgemein
by Uwe Raabe,
7. Jan 2021
Mit der while-Schleife blockierst du den Main-Thread und das Synchronize kommt nicht zum Zug.