![]() |
Timer zu langsam
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich habe folgenden Code geschrieben, um alle Möglichkeiten zwischen A und ZZZZZZ zu bekommen:
Code:
[color=blue]char[/color][] valueString;
[color=blue]int[/color] count = 0;
Code:
.
valueString[count]++;
[color=blue]if[/color] (valueString[count] > [color=darkred]'Z'[/color]) { valueString[count] = [color=darkred]'A'[/color]; [color=blue]if[/color] (count != 0) [color=blue]for[/color] ([color=blue]int[/color] i = count - 1; i >= 0; i--) { valueString[i]++; [color=blue]if[/color] (valueString[i] <= [color=darkred]'Z'[/color]) [color=blue]break[/color]; else valueString[i] = [color=darkred]'A'[/color]; [color=blue]if[/color] (i == 0) count++; } else { valueString[0] = [color=darkred]'A'[/color]; count++; } } Der 2. Teil ist in einem Timer, um eine Ausgabe zu erzeugen, welche ich in einer Schleife nicht hätte. Jedoch ist das Programm sehr langsam (siehe Anhang). Das Intervall ist jedoch bereits auf 1. Wie kann ich das beschleunigen? Liegt es am Algorithmus, am Timer oder an etwas anderem? Ich habe übrigens den System.Windows.Forms.Timer genommen. Wäre der System.Timers.Timer besser? Danke schon mal. Grüße Faux |
Re: Timer zu langsam
Zitat:
Zitat:
Zitat:
|
Re: Timer zu langsam
Wenn ich schreibe
Code:
Dann sieht man erst nach Ablauf der Schleife das Ergebnis.
for (int i = 0; i <= 100; i++)
{ textBox1.Text += ( i.ToString() ); } Zitat:
|
Re: Timer zu langsam
Zitat:
|
Re: Timer zu langsam
Ja, mit Refresh hab ichs auch schon probiert. Geht leider auch nicht.
Jedoch liegts wirklich am Timer. Ich hab grad eine equivalente Konsolenanwendung dazu geschrieben, jedoch mit einer for-Schleife. Das funktioniert perfekt. Ja du hast recht. Es liegt daran, dass sich das Textfeld nicht aktualisieren kann. |
Re: Timer zu langsam
Das muss gehen mit Refresh oder Repaint oder was es da unter .NET eben gibt. So was hab eich noch nie mit eibnem Timer gelöst, geschweigen denn schon mal so gelöst gesehen. :roll:
|
Re: Timer zu langsam
Ich wollte es ja auch nur mit einem Timer machen, da ich bei for keine Ausgabe bekam (jetzt weiß ich woran es liegt).
Mit textBox1.Refresh(); gings jetzt (keine Ahnung, wieso es vorher nicht ging. Ich habe es vor der Timer-Möglichkeit ausprobiert...)... Danke für die Hilfe. EIne Frage noch: Ich will einen STOP-Button einbauen. Wie kann ich das realisieren? |
Re: Timer zu langsam
Nimm eine globale boolean Variable bzw. privat für die Klasse: bCancel: Boolean = False; Setze sie mit der Schaltfläche auf True und frag sie in der Schleife ab. Das macht es aber erforderlich, dass das fenster seine Nachrichtenschleife abarbeitet. Du brauchst also ein .NEt Äquivalent zu Application.Processmessages.
Eleganter geht es natürlcih mit Threads. Und es wäre die Frage, ob diese nicht benutzen sollte. |
Re: Timer zu langsam
OK, danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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