Meinung zu Threads

27/01/2008 - 20:58 von Brian Schmalisch | Report spam
Hallo,

ich bin gerade dabei, eine Komponente zu bauen, welche eine Animation
starten soll. Ich bin dabei so vorgegangen, dass ein Wert aus dem Thread
erzeugt wird, welcher die Position des Objekts bestimmen soll.

Da ich noch nicht so viel Umgang mit Delegaten und Threads habe, möchte ich
mich nur vergewissern, ob mein Weg so richtig ist. Mir ist bei meinem
Beispiel aufgefallen, dass beim Beenden des Formulars der Debugmodus nicht
abgeschlossen wird im VS. Ich muss dann immer manuell Debuggen abbrechen.

Hier mein Ansatz:

public partial class ScrollObject: UserControl
{

Thread thread1;
delegate void UpdateCountDelegate(int value);
int zaehler = 0;
int counter = 0;
private void UpdateCount(int value)
{
zaehler += value;
label1.Text = zaehler.ToString(); // Nur zum Testen
this.Refresh();
}
public void Start()
{
thread1 = new Thread(new ThreadStart(MoveLeft));
thread1.Start();
}
private void MoveLeft()
{
UpdateCountDelegate updateCount = new UpdateCountDelegate(UpdateCount);
while (true)
{
counter++;
if (counter > 50)
counter = 0;
this.Invoke(updateCount, counter);
Thread.Sleep(laufzeit);
}
}
}

protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
thread1.Join(0);
components.Dispose();
}
thread1.Join(0);
base.Dispose(disposing);
}

mfg

Brian
 

Lesen sie die antworten

#1 Andre Stille
28/01/2008 - 13:47 | Warnen spam
Hallo!

"Brian Schmalisch" schrieb im Newsbeitrag
news:fninpt$rm2$01$

Da ich noch nicht so viel Umgang mit Delegaten und Threads habe, möchte
ich mich nur vergewissern, ob mein Weg so richtig ist. Mir ist bei meinem
Beispiel aufgefallen, dass beim Beenden des Formulars der Debugmodus nicht
abgeschlossen wird im VS. Ich muss dann immer manuell Debuggen abbrechen.




Eine Applikation beendet sich erst, wenn alle Threads beendet wurden. Da
dein neuer Thread aber ewig làuft und nicht beendet wird, làuft die
Applikation auch ewig.

In dem Fall hier würde ich zu der Timer-Komponente greifen. Die eignet
sich immer dann, wenn der nàchste Ausführungszeitpunkt der Thread-Schleife
vorhersagbar ist und die Schleife selber schnell ausgeführt werden kann.

MfG
Andre Stille

Ähnliche fragen