Hallo,
Wie starte ich eine nicht statische Methode als Thread:
Thread Haupt = new Thread(new ThreadStart
(HauptSchleife));
namespace KLasseINklasse
{
public partial class Form1 : Form
{
static Label RefLabel = null;
static int test5;
static bool Thread_Running;
Thread Haupt = new Thread(new ThreadStart
(HauptSchleife));
//---------------------------------------------------------------------
public void HauptSchleife() //Thread
{
while (Thread_Running == true)
{
test5++;
Ausgabe();
}
}
void Ausgabe()
{
label1.Text = String.Format(„wert: {0:d}“, test5);
}
Compilerfehler: Für das nicht statische Feld, die Methode
oder Eigenschaft ist ein Objektverweis erforderlich
Wenn man die Methode statisch macht:
static public void HauptSchleife() //Thread
{
Label class_inst = new Label(); //umständlich
class_inst = RefLabel; // um an Forms
// Elemente zu kommen
while (Thread_Running == true)
{
class_inst.Text = String.Format(„Wert:
{0:d}“, test5);
test5++;
Ausgabe();
}
}
Compilerfehler bei dem Funktionsaufruf:
Ausgabe();
Ein Feldinitalisierer kann nicht auf das nicht statische Feld bzw. die nicht statische Methode oder Eigenschaft verweisen
das Problem mit invoke externer (eigener) Thread greift auf Elemente des Form1 Thread zu, habe ich hier nicht berücksichtigt
Wenn ich die Funktion in eine Klasse kappsele
static Test1 test1= new Test1(); // bei Klasse
Thread test1Thread = new Thread(test1.HauptSchleife);
bekomme ich dort den Fehler:
das die Klassen geschachtelt sind wenn ich auf
Windows Form Elemente zugreifen will
Kann ich im Konstruktor die Referenz zum allen Form1
alle Elemente übergeben?
Ich verstoße auch gegen die Objektorientierte vorgehensweise.
Wie kann man das ev. anders lösen?
vielen Dank