AGB  ·  Datenschutz  ·  Impressum  







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

Threads und Nachrichtenschleifen

Ein Thema von faux · begonnen am 11. Sep 2005 · letzter Beitrag vom 11. Sep 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 16:59
Hallo!

Ich habe eine for-Schleife, die ca 1e9 Durchläufe hat. Das ganze dauert also eine Weile. Jetzt will ich einen STOP-Button realisieren.
Luckie hat mir vorgeschlagen, dass ich die Schleife in einen Thread geben soll oder eine Nachrichtenschleife machen soll. Leider habe ich weder vom einen noch vom Anderen irgend eine Ahnung. Kennt da jemand ein Tutorial für .NET? Egal ob Delphi oder C#.
Oder kann mir jemand ein kurzes Beispiel geben. Also einfach eine lange Schleife die man abbrechen kann.

Danke für jede Hilfe.

Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 17:21
Nur so als Tipp: Application.ProcessMessages ist in .NET gleichbedeutend mit Application.DoEvents
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 17:26
Häää???
SOrry, aber ich steh grad voll auf der Leitung...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 17:35
Delphi-Quellcode:
//Delphi-Code

//event des stop-buttons
begin
stop:=true;
end;

//in der schleife
for i:= 0 to high(something) do
 begin
  {...}
  if i mod 10000 = 0 then application.processmessages;
  if stop then exit; //oder break oder so ähnlich... mit den ganzen stopp-befehlen kenn ich mich nicht aus.
 end;
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 17:39
Naja, wenn du in Win32 bspw. ne Schleife hast, die lang dauert, aber die Programmoberfläche noch benutzbar sein soll, dann verwendest du ja auch Application.ProcessMessages.
Delphi-Quellcode:
procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
begin
  MessageBox.Show('Abänt!');
end;

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
var i: integer;
begin
 for i := 0 to 1000000 do
  begin
   ListBox1.Items.Add(i.ToString);
   Application.DoEvents;
  end;
end;

Das is jetz Delphi.NET-Code.

Wenn du Button1 clickst, dann werden die Zahlen in die ListBox geschrieben.
Während das noch läuft, kannst du Button2 clicken, und die MessageBox kommt trotzdem


@DGL-Luke: Naja, das is halt Win32-Code
Aber einfach das Application.ProcessMessages durch .DoEvents ersetzen, und dann müssts laufen
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 21:03
Danke Ultimator! Was bewirkt Application.DoEvents eigentlich genau?

Noch was anderes: Wenn man den Stop-BUtton betätigen will und auf ihn klickt, dann wird zuerst der Start-Button erneut gedrückt. Woran liegt das? (siehe Anhang)
Angehängte Dateien
Dateityp: exe windowsapplication6_811.exe (20,0 KB, 3x aufgerufen)
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: Threads und Nachrichtenschleifen

  Alt 11. Sep 2005, 21:29
Zitat von faux:
Danke Ultimator! Was bewirkt Application.DoEvents eigentlich genau?
Da werden, gerade bei Schleifen, immer alle anderen Events erst verarbeitet, bis die jeweilige Routine (Schleife) weitergeht. Kann zum Beispiel benutzt werden, wenn man mit einer Schleife etwas aufs Canvas zeichnen will o.Ä. Ohne Application.ProcessMessages / Application.DoEvents würde man davon gar nichts sehen können
  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 23:45 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