Hallo zusammen,
ich hoffe nicht, das ich mich hier gleich total mit meinem ersten Thread blamiere, aber ich komme grade einfach nicht mehr weiter (was durchaus daran liegen kann, dass ich noch allzulange mit C# werkel).
Ich möchte gerne eine Form (die einfach nur eine endlos laufende Progrssbar enthält) starten und nach irgendwelchen Aktionen wieder beenden (während im Hintergrund halt Prozesse laufen). Nun habe ich mir gedacht, ich packe in meine Main Klasse den folgenden Schnipsel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| using System.Threading; ... public class Main { Thread statusWindow; ...
public Thread StatusWindow { get { return statusWindow; } set { statusWindow = value; } } ...
public Main() { statusWindow = new Thread(this.ShowStatusWindow); statusWindow.IsBackground = true; } ...
public void ShowStatusWindow(object Message) { FormShowStatus status = new FormShowStatus(Message.ToString()); status.ShowDialog(); } ... |
Anschliessend rufe ich wo immer ich es brauche mein Status Window mit
C#-Quelltext
1: 2: 3: 4: 5:
| Main.StatusWindow.Start("Der text der im Fenster erscheinen soll"); ... ... ... Main.StatusWindow.Abort(); |
auf. Soweit klappt das auch beim allerersten Aufruf. Leider nur beim ersten Aufruf. Bei jedem weiter Aufruf auf die gleiche Art und Weise erhalte ich die Exception "Thread is running or terminated, it cannot restart". Der Threadstate ist beim ersten mal tatächlich auf "Background | Unstarted" gesetzt, nach dem "Abort()" auf "stopped.
Soweit so gut, ich sehe ja acuh, das ein "Abort" den stoppt. Aber wie gehe ich jetzt richtig mit dem Thread um. Die Methode "Suspend" ergibt das gleiche Ergebnis, abgesehen dasvon sagt mir der Compiler gleich, das Dingens ist veraltet.
Vielleicht suche ich auch flasch, aber finde nicht wirklich einen Hinwes (den ich verstehe) darauf, wie ich nun korrekt diese Thread beliebig oft neustarten kann.
Würde mich sehr über Hilfe freuen
Viele grüsse
Dave
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt