![]() |
Thread Testanwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich versuche mich gerade in Threads einzuarbeiten. Da das noch nicht so richtig klappt, habe ich mal eine Beispielanwendung geschrieben, die nur einen simplen Thread enthält. Könnte sich das irgendwer schnell ansehen, und mir sagen, was man da anders machen sollte und so? Hier der Code:
Code:
Das Formular besteht aus: label1, textBox1, button1.
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace Thread_Test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MyThread MyInstance = new MyThread(); label1.Text = "Gestartet"; while (MyInstance.Thread.IsAlive) { textBox1.Text = MyInstance.Output; Application.DoEvents(); } MyInstance.Thread.Join(); label1.Text = "Beendet"; textBox1.Text = MyInstance.Output; } } public class MyThread { public Thread Thread; public string Output; public MyThread() { this.Thread = new Thread(new ThreadStart(Execute)); this.Thread.Start(); } void Execute() { for (int i = 1; i <= 5e6; i++) { Output = i.ToString(); } } } } Danke schon mal. Grüße Faux |
Re: Thread Testanwendung
Heißt das, das Niemand antwortet daran, dass keiner versteht was ich will, ich keinen fehlergemacht habe, oder keiner Lust zum Antworten hat?
Grüße Faux |
Re: Thread Testanwendung
Nun, was ist denn das Problem? Läuft der Thread erst gar nicht, bricht er mit fehlermeldung ab, ... ?
|
Re: Thread Testanwendung
Es gibt kein Problem. Alles läuft besten, nur wollte ich wissen, ob die Klasse so passt wie sie ist, oder ob ich vielleicht statt public ein private oä. machen soll (nur ein Bsp.).
Denn wenn das so passt, mache ich das jetzt in mehrere Programme rein, wenn mir dann aber in einem Monat wer sagt, dass das und das anders ginge, wär das viel Arbeit zum Ändern.. ;) Faux |
Re: Thread Testanwendung
Code:
Das sind ja Public-Felder :shock: Für solche Sachen nimmt man private Felder und ReadOnly-Properties ;)
public Thread Thread;
public string Output; |
Re: Thread Testanwendung
Zitat:
Allerdings ändere mal den namen deines Threads, von mir aus in thread! |
Re: Thread Testanwendung
Zitat:
GENAU das, wollte ich wissen. @Dax: Einspruch: Wie könnte ich den Thread dann Stoppen und/oder das Ergebnis auslesen??? Zitat:
|
Re: Thread Testanwendung
Zitat:
[add]Ich denke, Speedmaster meint den Namen der Public-Variable. [/add] |
Re: Thread Testanwendung
Aber Dax meine, dass ich sie private UND readonly machen soll. Und als Private kann ich dann von außen nix machen.
Nein ich will dem Thread keine andere Instanz zuweisen. |
Re: Thread Testanwendung
Zitat:
|
Re: Thread Testanwendung
Zitat:
SchleifenThread.Thread.Start(); Oder meinst du was anderes? |
Re: Thread Testanwendung
Zitat:
|
Re: Thread Testanwendung
Ich kappir das grad garnicht, sorry.
Kannst du mir ein kurzes Bsp geben? |
Re: Thread Testanwendung
Delphi-Quellcode:
Du gibst einem Thread den Namen "Thread", das kann zu Problemen führen, zumindestens hatte ich öfters Probleme damit! Die Instanz sollte sich wenn möglich immer anderst nennen! Natürlich geht es, aber du findest sowas auch in keinem MS Beispiel!
public Thread Thread;
|
Re: Thread Testanwendung
Zitat:
Außerdem wird dieses "Feature" ausdrücklich von C# unterstützt... ;) Ich habs nur der Übersicht her gemacht. Wäre ja unlogisch, wenn der Thread "MeinThread" heißt, obwohl er auch Thread heißen kann... IMHO |
Re: Thread Testanwendung
Code:
Reden wir überhaupt noch vom selben *g* ?
class ThreadingClass
{ private Thread thread; public Thread InnerThread { get { return thread; } } } |
Re: Thread Testanwendung
OK, ich hab mich etwas seltsam ausgedrückt:
Ich benutze einen Thread, um MD5-Werte zu berechnen. Und zwar von einer Reihe von Strings (A, B, ... Z, AA, AB, ..., AZ, BA, ... ZZZZZZ). Wie weit, kann der Benutzer einstellen. Ich erzeuge die Strings in einer FOR-Schleife. Dort berechne ich auch gleich den MD5 dazu. Jedenfalls will ich, dass diese Schleife in einen Thread ausgelagert wird. Jetzt das Problem. Beim Klick auf den Start - Button, Starte ich den Thread. Der Rechnet dann vorsich hin. Jetzt will ich 1. mit einem Pause-Button den Thread pausieren und nachher ev. fortsetzen. Auch das Stoppen des Threads ist möglich. Nachdem der Thread mit der Schleife fertig ist, geht er in den Modus "Stopped" (NICHT "Unstarted"). Trotzdem soll ein erneutes Aufrufen des Threads möglich sein. Wie kann ich das Realisieren? Mein Thread ist der aus dem Thread ![]() |
Re: Thread Testanwendung
OK, Da sich zwei unterschiedliche Threads irgendwie im Thema überschnitten haben, ist der hier überflüssig.. ;)
Danke für die Hilfe nochmal ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz