AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

multithreading funktioniert nicht

Ein Thema von Innos · begonnen am 12. Jun 2007 · letzter Beitrag vom 12. Jun 2007
 
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#1

multithreading funktioniert nicht

  Alt 12. Jun 2007, 00:03
Hiii^^

habe ein Programm erstellt, dass bestimmte Pixel solange abfragt, bis eine boolsche bedingung true is also ca. so:

Delphi-Quellcode:
var bool:Boolean;
begin
repeat ..... //Die Pixel sind Tcolor und werden hier immer wieder abgefragt
...
bool:=(Pixel1 = Pixel2) and (Pixel3 = Pixel 4);
until (bool);
wenn ich das starte funktioniert auch alles! nur das programm is während der repeat-schleife nicht ansprechbar... da es aba mehrere procedures durchführen soll is das schlecht!

habe mir gedacht ein Thread würde helfen: hab mich schlau gemacht und thread erstellt... thread funktioniert auch soweit nur bleibt der Hauptthread (VCL) und allgemein das ganze Programm wieder während der repeat-schleife stehn...
funktioniert also der wechsel zwischen den threads nicht oder liegt ein Deadlock vor? synkronisiert hab ich bisher nix^^ habs aba scho oft ausprobiert (ohne erfolg)...

hier mein Thread: alles aus einem Thread-Tutorial http://www.dev-center.de/index.php?c...multithreading

Delphi-Quellcode:
 type
  TBinFertig = procedure(const Content: String) of object;
  TMyOwnThread = class(TThread)
  protected
    MediaPlayer1: TMediaPlayer;
    CB1: TCheckBox;
    CB2: TCheckBox;
    CB3: TCheckBox;
    CB4: TCheckBox;
    procedure Execute; override;
  private
    FBinFertig: TBinFertig;
    procedure SyncBinFertig;

  public
    property BinFertig: TBinFertig read FBinFertig write FBinFertig;
  end;

...
var
  MyOwnThread: TMyOwnThread ;

implementation
{$R *.dfm}

procedure TMyOwnThread.SyncBinFertig; //weiß damit nix anzufangen, da keine andere porcedure auf zB meine
                                         //Checkbox im Form1 (CB1) zugreift
begin

end;

procedure TMyOwnThread.Execute;

begin
  try

  bool:=false;
      lDC:= GetDC(0);
      if lDC> 0 then
     repeat
        Pixel[1]:= GetPixel(lDC, 554, 138); // hier frag ich einfach die Pixelfarbe von einem Array of TColor ab
       
       if Form1.CB1.Checked=true then // geht auch... also diese Checkbox zu checken 0o
        bool:=((bool) or x);

        if Form1.CB2.Checked=true then
        bool:=((bool) or y);

        if Form1.CB3.Checked=true then
        bool:=((bool) or z);

        if Form1.CB4.Checked=true then
        bool:=((bool) or a);
                                
          until bool; //an der endlosschleife bleibt alles hängen es soll aba nur dieser Thread arbeiten NICHT VCL

Form1.MediaPlayer1.Play

  except
    on e: exception do begin
      showmessage('blaa');
    end;
  end;
end;

procedure TSilkroadOnlineTool.Button5Click(Sender: TObject);
var Thread: TMyOwnThread;
begin
 Thread := TMyOwnThread.Create(True);
 Thread.Resume;
  Thread.Suspend;
  Thread.Terminate;
  Thread.Execute;
end;
end.
also habe heute zum ersten ma Thread in diesem zusammenhang gehört!! und hab deswegen kein plan warum es nich klappt ohne, dass der VCL stehn bleibt... neue exe is ne möglichkeit müsste aba dann variablen versenden etc und ich hätte 2 exe-dateien

also HELFT mir plz vielen Dank im voraus
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:12 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