Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.01.10 19:29 
Hi.

Ist mir ja richtig peinlich, soviele Fragen von mir, aber hier wird mir geholfen =)

Also ich habe jetzt Video2Brain, GalileoComputing und devtrain.de durchgestöbert, aber so wirklich verstanden habe ich Threading noch nicht.

Ich habe folgendes Problem. Mein Hauptprogramm speichert Wartezeiten ab. Bisher habe ich es so gemacht, dass ich die größte Wartezeit gesucht habe und für diese Zeit dann den SleepBefehl fürs Hauptprogramm aufgerufen habe.

Nun möchte ich mein Programm gerne so abändern, dass nicht erst die größte Wartezeit abgewartet wird und dann alle Elemente mit einer Schleife durchlaufen werden, sondern jeweils ein Element nach der einzelnen Wartezeit ausführe.

Angenommen ich habe 3 Wartezeiten:

5,10 und 20 Sekunden

Nun möchte ich, dass nach 5 Sekunden, nach 10 Sekunden und nach 20 Sekunden in die Console geschrieben wird.

Eigentlich wollte ich um bei diesem Beispiel zu bleiben, alle 3 Threads starten und dann Thread1 5 Sekunden, Thread2 10 Sekunden und Thread3 20 Sekunden schlafen legen. Wenn das so funktioniert, weiß ich aber leider noch nicht wie das code. Ich habe wie folgt angefangen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
                Thread[] _threads = new Thread[wartezeiten.Count];
                for (i = 0; i < wartezeiten.Count; i++)
                {
                    _threads[i] = new Thread(new ThreadStart(warten)); // Threads werden erzeugt
                    _threads[i].Start(); // Threads werden gestartet 
                }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.01.10 19:41 
user profile iconBlackMatrix hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe folgendes Problem. Mein Hauptprogramm speichert Wartezeiten ab. Bisher habe ich es so gemacht, dass ich die größte Wartezeit gesucht habe und für diese Zeit dann den SleepBefehl fürs Hauptprogramm aufgerufen habe.
Warum wartest du nicht auf die kleinste Wartezeit, schreibst in die Konsole, wartest dann auf den nächsten Zeitpunkt usw.? Threads brauchst du hier sicherlich nicht, vor allem da das wirklich kein leichtes Thema ist.

_________________
>λ=
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.01.10 20:04 
Die Möglichkeit ist mir auch schon in den Sinn gekommen, aber ich hatte erhofft, dass ich, wenn ich die einzelnen Threads für die Wartezeit SleepSetze, dadurch das ganze Hauptprogramm automatisch in der richtigen Reihenfolge und dem richtigen Zeitversatz abläuft, weil die Threads alle nacheinander wieder aufwachen.

Dadurch wollte ich mir das Sortieren und das Berechnen der Abstände der Wartezeiten umgehen und eigentlich hatte ich auch gedacht, dass das ganze mit 10 Zeilen Code realisierbar ist.