Th69 hat folgendes geschrieben : |
Du "invoke"st ja auch jeweils die ganze Schleife.
Du mußt nur den GUI-Teil (d.h. die TextBox-Methoden) per Invoke aufrufen.
Falls du schon mit VS 2010 und .NET 4.0 arbeitest, kannst du dir mal die "Task Parallel Library" (TPL) anschauen, s.a. www.c-sharp-forum.de....php?p=604486#604486 |
Danke, nun klappt das schon mal.
Bei Gelegenheit werde ich mir mal die 4.0er Version anschauen. Aber wenn es auch "klassisch" geht, warum nicht? Daher habe ich erstmal so gemacht.
danielf hat folgendes geschrieben : |
[...]
Mit dem BackgroundWorker kannst du es ein bisschen (ressourcemässig) schlanker gestalten. Darüber hinaus beenden sich die BackgroundWorker wenn sich der Hauptthread beendet.
Besser wäre auch, wenn du nicht fkt1 und fkt2 machst, sondern das zu ändernde TextBox-Control der funktion mitgibst (z.B. [url=dotnet-snippets.de/d...83.aspx]hier[/url]). |
BackgroundWorker sollte ich mir in der Tat einmal genauer anschauen. Allerdings fand ich das auf den ersten Blick nicht so leicht verständlich. Aber mal gucken.
Alles in eine Funktion wäre eine weitere Verbesserungsmöglichkeit. Auch etwas für die nahe Zukunft.
@
Kha: Danke.
--------------------------------------
Jetzt, wo diese Sache läuft, möchte ich einen Schritt weitergehen. Ich habe einen Button und ein Textfeld hinzugefügt. Ich möchte nun, dass in dem Textfeld eine Zahl hochgezählt wird - und zwar bei jedem Klick +1. Ich bin jetzt so weit, dass die Klicks "registriert" werden, aber das Resultat sehe ich erst, nachdem die beiden Zähler-Threads fertig sind. (Also da steht z.B. eine 1, ich klick 3x und NACH dem Hochzählen erscheint eine 4. Das soll jedoch mehr oder weniger unmittelbar passieren.)
Das wäre der Button:
C#-Quelltext
1: 2: 3: 4: 5:
| private void button2_Click(object sender, EventArgs e) { int zahl = Convert.ToInt32(textBox3.Text) + 1; textBox3.Text = zahl.ToString(); } |
Ich habe da auch schon (erfolglos) probiert, mit einem weiteren Thread anzukommen, aber das veränderte alles entweder zum schlechteren oder änderte nichts. Ich habe da auch ein Verständnisproblem. Thread 1 und 2 (der Hauptthread sei 0) erzeuge ich ja in der Click-Methode des Button1. Der weiß natürlich nichts von einem Thread im 2. Button (und umgekehrt). In einer Konsolenanwendung würde ich die Threads "ja einfach" in der main-Funktion erzeugen, aber wie muss ich hier vorgehen? Wo erzeugt man da richtigerweise die Threads?