AGB  ·  Datenschutz  ·  Impressum  







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

Thread Zugriffsverletzung

Ein Thema von sieppl · begonnen am 8. Sep 2004 · letzter Beitrag vom 8. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Thread Zugriffsverletzung

  Alt 8. Sep 2004, 15:51
Diese Klasse
Delphi-Quellcode:
  TMyListView = class(TCustomListView)
  private
    FThumbnailThread: TThumbnailThread;
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure TreeUpdate(NewRoot: PItemIDList);
benutzt einen TThread (TThumbnailThread) wie man sieht. Ich verstehe nicht, warum ich im Konstruktor von TMyListView auf sämtliche Methoden des Threades zugreifen kann und in TreeUpdate eine Zugriffsverletzung bekomme.

Delphi-Quellcode:
procedure TMyListView.TreeUpdate(NewRoot: PItemIDList);
begin
  if (NewRoot <> nil) then
  begin
    FThumbnailThread.Suspend; //HIER ZUGRIFFSVERLETZUNG!!!
  end;
end;
Hier noch die Thread-Klasse (Standard):
Delphi-Quellcode:
TThumbnailThread = class(TThread)
  private
    FListView: TMyListView;
  protected
    procedure Execute; override;
  public
    constructor Create(const ListView: TMyListView);
    destructor Destroy; override;
  end;
Der Thread läuft übrigens. (Endlos Schleife mit Sleep(1000)) Nur diese blöde Zugriffsverletzung, die ich ziemlich unlogisch finde..

DANKE!
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 15:52
Hi,

um auf Daten der VCL Form zuzugreifen (aus einem Thread aus), solltest du Delphi-Referenz durchsuchenSyncronize verwenden.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 15:56
wo und wie erzeugtst du FThumbnailThread (bzw. wo wirds zugewiesen ?)
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#4

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 15:59
Zitat von Gruber_Hans_12345:
wo und wie erzeugtst du FThumbnailThread (bzw. wo wirds zugewiesen ?)
Delphi-Quellcode:
constructor TMyListView.Create(AOwner: TComponent);
begin
  inherited;
  FThumbnailThread := TThumbnailThread.Create(Self);
  FThumbnailThread.Resume; //Funktioniert
end;
Delphi-Quellcode:
constructor TThumbnailThread.Create(const ListView: TMyListView);
begin
  inherited Create(True);
  Priority := tpLowest;
  FreeOnTerminate := True;
  Self.FListView := ListView;
end;
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#5

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:01
Zitat von mirage228:
Hi,
um auf Daten der VCL Form zuzugreifen (aus einem Thread aus), solltest du Delphi-Referenz durchsuchenSyncronize verwenden.
Danke für den Hinweis, ist mir bekannt. Wie man sehen kann, greife ich nur von TMyListView auf den Thread zu, nicht umgekehrt.
Sebastian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:03
und wie / wo wird TreeUpdate aufgerufen ?

und ist TMyListView und TWOCListView das selbe ?
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#7

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:08
Zitat von Gruber_Hans_12345:
und wie / wo wird TreeUpdate aufgerufen ?
aus einer anderen Klasse.
Zitat:
und ist TMyListView und TWOCListView das selbe ?
sorry, habe ich bereits angepasst. ja ist das selbe!
Sebastian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:16
Kannst denn Code der TreeUpdate aufruft posten ?
Ist die Variabel der Klasse wo du TreeUpdate aufrufst richtig initialisiert ?
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#9

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:26
Delphi-Quellcode:
 TMyShellTreeView = class(TShellTreeView)
  private
    FMyListView: TMyListView;
  protected
    function CanChange(Node: TTreeNode): Boolean; override;
  published
    property WMyListView: TMyListView read FMyListView write FMyListView;
  end;
Delphi-Quellcode:
function TMyShellTreeView.CanChange(Node: TTreeNode): Boolean;
var
  Fldr: TShellFolder;
begin
  Result := inherited CanChange(Node);
  if Result and Assigned(Node) then
  begin
  if Assigned(FMyListView) then
    Fldr := TShellFolder(Node.Data);
    FMyListView.TreeUpdate;//(Fldr.AbsoluteID); // ****
  end;
end;
**** Habe mal den Parameter überall entfernt, um den Fehler in der PIDL auszuschließen.
-> Immer noch ein Zugriffsfehler..
Sebastian
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Thread Zugriffsverletzung

  Alt 8. Sep 2004, 16:30
setz mal nen Breakpoint in die procedure CanChange und schau, ob FMyListView das ist, was es sein soll, um sicher zu stellen, das du nicht von einer ungültigen Klassen Variabel eine Methode aufrufst (assigned(FMyListView) kann zu wenig sein, wenn FMyListView irgendwann mal gültig war und dann .Free aber nicht auf nil gesetzt wurde !)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:50 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