AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) Delphi Mehere Instanzen einer Procedure erstellen in Delphi 2007.net
Thema durchsuchen
Ansicht
Themen-Optionen

Mehere Instanzen einer Procedure erstellen in Delphi 2007.net

Ein Thema von Digielm · begonnen am 24. Sep 2010 · letzter Beitrag vom 24. Sep 2010
 
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#3

AW: Mehere Instanzen einer Procedure erstellen in Delphi 2007.net

  Alt 24. Sep 2010, 14:03
ich hab eine Frage zu Delphi 2007.net.
Erstmal mein ehrliches, herzliches Beileid.

Ich habe in einer Procedure eine Verbindung an eine Datenbank und konstant eine Tabelle offen. Wenn ich einen 2. Thread erzeuge wird wieder auf die selbe Procedure gezeigt, aber diesmal mit einem anderen Tabelleninhalt.
Woah. Den Code möchte ich lieber nicht sehen. Es ist schon ein Unding, dass das alte Delphi .NET klassenlose Methoden zulässt. Das kann die .NET Runtime nämlich schon gar nicht.

Wie hältst Du eigentlich 'konstant eine Tabelle offen'? Theoretisch sollte es doch reichen, ein System.Data.DataSet in einer statischen Variable zu halten. Lesende Zugriffe können darauf ohne weiteres Multithreaded erfolgen, aber beim Schreiben sollte das Object gesperrt werden. Siehe auch: http://msdn.microsoft.com/en-us/library/ms971481.aspx

Wenn da ein neuer Aufruf gegen die Datenbank passiert: Ist im ersten Thread eine Transaction offen die noch nicht commited wurde? Es könnte nämlich sein, dass der zweite Thread eine neue Verbindung aufmacht und dann an der Transaction des ersten Threads 'vorbei' liest.

Habe ich eine Chance die Procedure als eigene Instanz laufen zu lassen, oder muss ich das mit einer Klasse realisieren, damit das klappt ?
Die Methode sollte von der Runtime eigentlich schon per default automatisch in dem Thread ausgeführt werden, aus dem sie aufgerufen wird. Ausser, der Delphi-Compiler macht da im Hintergrund irgendwelche Schweinereien die das auf dem Hauptthread invoken lassen. Aber das traue ich den Jungs nicht zu.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
 


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