Zitat von
messie:
Mir ist aufgefallen, daß Du Deine procedure BufferOnImage mit synchronize aufrufst, obwohl sie innerhalb des Threads steht. Synchronize hält meiner Meinung nach den Thread an bis externe prozeduren abgearbeitet sind. Dieses Thread-interne Anhalten erscheint mir nicht logisch. Ich habe aber keine Ahnung, welche Folgen das hat.
Hmm einer von uns beiden liegt falsch, ich bin jetzt grad auch nicht mehr sicher... Ich dachte dass ich synchronize benutzen muss, wenn ich aus dem Thread heraus auf die nicht-threadsichere-
VCL zugreife. Eben darum mach ich ja alles im Thread, der Buffer wird bemalt und dann über synchronize auf die
VCL übertragen, das müsste
imho so richtig sein...
Zitat von
messie:
Außerdem: hast Du irgendwo im Programm Wairforsingleobject mit einerm timeout verwendet? Dann könnte passieren, das Teile des Threads nicht ausgeführt, z.B. weil die Antwortzeit des Geräts besonders lang war. Es kann vielleicht auch sinnvoll sein, die Antwortzeiten zu messen und irgendwo zu puffern um einen möglichen Zusammenhang damit zu untersuchen.
Daran kann es nicht liegen, ich kriege die Werte ja immer noch rein, sonst würden sich Abb. zwei und die Labels ja nicht aktualisierenn und die Werte werden auch empfangen hab ich alles durch Breakpoints herausfinden können.
Zitat von
messie:
Der Hinweis von Muetze1 ist auch richtig: das beschreiben des bitmaps möglichst außerhalb Deines Threads umsetzen und diese Prozedur dann mit synchronize aufrufen.
Ich glaube der Hinweis von Muetze1 war auf das Aktualisieren der Labels bezogen, welche ich nicht mit synchronize aktualisiert habe. Das habe ich jetzt testweise eingebaut, das Problem ist, dass das "Phänomen" so unregelmäßig auftritt, dass ich jetzt noch nicht sagen kann ob der Fehler weg ist. Wäre aber auch komisch
imho, weil die labels ja funktionieren und das Image nicht. Image2 funktioniert ja trotzdem...
Zitat von
messie:
Grüße, Messie
Tschüssi