AGB  ·  Datenschutz  ·  Impressum  







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

Multithreading (Access Violation)

Ein Thema von exchange · begonnen am 18. Nov 2016 · letzter Beitrag vom 30. Nov 2016
Antwort Antwort
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
535 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Multithreading (Access Violation)

  Alt 21. Nov 2016, 10:18
Du erstellst im Execute X-Connections und Querys mit der gleichen Variable.

Delphi-Quellcode:
  while not Terminated do
  begin
und gibst sie beim ersten erfolgreichen wieder frei. Die anderen gucken dann in die Röhre
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#2

AW: Multithreading (Access Violation)

  Alt 21. Nov 2016, 11:05
Hallo,
meiner Meinung nach ist das egal, da ich alles wieder freigebe was ich vorher generiert habe.

Aber gut. Zum Testen while Schleife entfernt, sodass jeder Thread einmalig durchläuft.

Fehler bleibt.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Multithreading (Access Violation)

  Alt 21. Nov 2016, 11:29
Auf den ersten Blick erscheint mir der Code des zweiten Beispiels ganz in Ordnung, nur der Sinn des while not terminated erschließt sich mir nicht ganz.

Wie wäre es wenn Du den Code mit ein paar exeptions aufhübschen würdest um den Fehler etwas einzugrenzen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
535 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Multithreading (Access Violation)

  Alt 21. Nov 2016, 12:25
Zum Testen while Schleife entfernt, sodass jeder Thread einmalig durchläuft.

Fehler bleibt.
Und welcher?

Ich verwende die Devart MySql und MSSql Libraries. Vermutich werden die Unidac ähnlich sein. Du kannst im Hauptthread eine Verbindung statisch oder dynamisch erzeugen. Dann diese in allen Threads Assignen. Dies nur als Info damit Du im Thread nicht jedesmal die Verbindungsdaten mitführen musst.

Delphi-Quellcode:

var
  Qry: TMSQuery;
  Conn: TMSConnection;
begin
  Conn:= TMSConnection.Create(Nil);
  Conn.Assign(FMyGlobalMsConnection);
  Qry:= TMSQuery.Create(Nil);
  Qry.Connection:= Conn;
  Try
    Try

    except
      on E: Exception do LogException(e, 'MyException');
    end;
  Finally
    Qry.Free;
    Conn.Free;
  End;
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (21. Nov 2016 um 12:28 Uhr)
  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 20:22 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-2025 by Thomas Breitkreuz