AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Beendigung einer Methode warten

Ein Thema von Bomberbb · begonnen am 19. Feb 2009 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
Seite 2 von 2     12   
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#11

Re: Auf Beendigung einer Methode warten

  Alt 19. Feb 2009, 11:28
Sirius beschreibt das richtig,

Wenn innerhalb eines Programms Arbeiten zu erledigen(Objecte/Methoden) sind dann kann dies technisch nur nacheinander funktionieren. Es kann genausowenig wie ein Thread aufgeteilt werden. Aufteilen geht nur mit mehreren Threads wenn mehrere Prozessoren(oder Kerne) vorhanden sind und dies auch vom Betriebssystem unterstützt wird. Dürfte bei allen modernen Systemen aber der Fall sein denn das aufteilen der Threads managed das BS und nicht die Hardware. Ein einzelner Thread oder Programm kann niemals aufgeteilt und teile davon parallel bearbeitet werden.

Das Problem was du mit deiner Datei hast liegt im Windows begraben. Da eine geschlossene datei nicht sofort vom Filesystem freigegeben wird, deine Anwendung hat ja erstmal den Fukos und somit priorität. Alle Funktionen im System werden eben nacheinander abgearbeitet. Das heist zuerst kommen deine 3 Paintaktionen und dann das Dateischließen sobald dein Programm auf die nächste Message vom Windows wartet. Es sei denn du würdest die Datei selber schließen, was aber blödsinn wäre. Wenn du ein Sleep einbaust dann wird dem Betriebssystem Zeit gegeben in der Programmpause was anderes zu machen und damit wird eine andere Aufgabe dazwischengeschoben - zum beispiel das schließen der Datei was noch vom Filemanager ansteht.

Zum problem:
warum lädst du dein Bild nicht in einen Container und zeichnest von dort aus (TBitmap)


Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#12

Re: Auf Beendigung einer Methode warten

  Alt 20. Feb 2009, 09:03
Ok, wieder was gelernt. Ich hab auch mal genauer nachgelesen:
Zitat:
Parallelität kann in objektorientierten Sprachen auf unterschiedliche Weise
realisiert werden. ...
1. Ausführungsstränge wechseln zwischen Objekten:...
Trifft ein Ausführungsstrang auf einen Methodenaufruf, wechselt er vom Sender- zum Empfängerobjekt und kehrt erst nach
Bendigung der Methode zurück. ...
2. Jedes Objekt hat seinen eigenen Ausführungsstrang:
Ich bin bis jetzt immer vom Fall 2 ausgegangen. Fall 1 trifft wohl eher zu... Werde jetzt mal schauen, ob ich ohne das öffnen der Dateien auskomme.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

Re: Auf Beendigung einer Methode warten

  Alt 20. Feb 2009, 09:48
BTW: Die CriticalSection kannst du auch getrost rauslassen, denn die helfen dir hier nicht.

Ein Prozess kann eine CriticalSection so oft betreten wie er möchte (nur andere Prozesse können nicht gleichzeitig).

Einen anderen Prozess bekomme ich aber nur mit Threads, und die sind für VCL doof, also sind die CS überflüssig.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#14

Re: Auf Beendigung einer Methode warten

  Alt 20. Feb 2009, 09:56
Zitat von Bomberbb:
Ich habe bis zu 3 Zeichenflächen nebeneinander, auf denen unterschiedliche Darstellungen wiedergegeben werden. Sie dürfen nicht zur gleichen Zeit zeichnen, da sie alle auf die selbe Datei zugreifen. Und hier kommt es zum Fehler, wenn ich
Delphi-Quellcode:
Zeichenflaeche1.paint;
Zeichenflaeche2.paint;
Zeichenflaeche3.paint;
aufrufe, ist die Datei in Benutzung. Wenn ich ein Sleep(500) dazwischensetze, ist alles ok. ?
Entweder die Datei puffern oder die Datei nicht exklusiv öffnen oder zwischen den Paint-Aufrufen einfach in einer Schleife solange prüfen, bis die Datei wieder freigegeben ist.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#15

Re: Auf Beendigung einer Methode warten

  Alt 20. Feb 2009, 10:05
Ok, die CS hab ich schon rausgenommen. Und werde nun auch die Datei puffern.

Auf jeden Fall danke für die neuen Erkenntnisse...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz