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
Antwort Antwort
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#1

Mehere Instanzen einer Procedure erstellen in Delphi 2007.net

  Alt 24. Sep 2010, 10:11
Hallo an alle

ich hab eine Frage zu Delphi 2007.net.
Ich habe grade versucht mit Threads zu arbeiten, dabei ist mir leider aufgefallen das das ganze nicht so läuft wie ich will.
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. Habe ich eine Chance die Procedure als eigene Instanz laufen zu lassen, oder muss ich das mit einer Klasse realisieren, damit das klappt ?


Danke im Voraus
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

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

  Alt 24. Sep 2010, 11:21
Ich kann mich auch irren, aber von einer statischen procedure/function mehrere Instanzen zu erzeugen, ist in Hochsprachen allgemein nicht vorgesehen. (PS: Ich irre mich des öfteren)

Dafür sind ja Methoden und damit Klassen da. In C# gibt es auch Klassen, die im Prinzip nur eine Methode bieten (z.B. Comparer), aber evtl. bietet es sich ja an, die Funktion der Procedure gleich zusammen mit den anderen Aufgaben der Aktion in eine Thread-Klasse zu packen.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

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

  Alt 24. Sep 2010, 13: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
Antwort Antwort


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 01:58 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