![]() |
Threads und Nachrichtenschleifen
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 |
Re: Threads und Nachrichtenschleifen
Nur so als Tipp: Application.ProcessMessages ist in .NET gleichbedeutend mit Application.DoEvents ;)
|
Re: Threads und Nachrichtenschleifen
Häää???
SOrry, aber ich steh grad voll auf der Leitung... :oops: |
Re: Threads und Nachrichtenschleifen
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; |
Re: Threads und Nachrichtenschleifen
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 :) |
Re: Threads und Nachrichtenschleifen
Liste der Anhänge anzeigen (Anzahl: 1)
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) |
Re: Threads und Nachrichtenschleifen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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 by Thomas Breitkreuz