Mein Ziel ist es, dass in der Funktion "Dummy" ich die Steuerelemente wie Etiketten usw. der Form ändern kann, von dem der Thread initiiert..wie es zu tun ist .. bitte nicht komplett vorschlagen verschiedene Strategien oder einen Arbeiter Klasse usw. machen ... ändern Sie dies, wenn Sie könnenC# Threads - Eltern Zugang Problem
Thread pt= new Thread(new ParameterizedThreadStart(Dummy2));
private void button1_Click(object sender, EventArgs e)
{
pt = new Thread(new ParameterizedThreadStart(Dummy2));
pt.IsBackground = true;
pt.Start(this);
}
public static void Dummy(........)
{
/*
what i want to do here is to access the controls on my form form where the
tread was initiated and change them directly
*/
}
private void button2_Click(object sender, EventArgs e)
{
if (t.IsAlive)
label1.Text = "Running";
else
label1.Text = "Dead";
}
private void button3_Click(object sender, EventArgs e)
{
pt.Abort();
}
}
}
was ich plane, ist, dass ich dies tun könnte in der „Dummy“ Funktion
Dummy(object p)
{
p.label1.Text = " New Text " ;
}
jetzt, wenn ich das tun möchte, dass dieser Thread tut, was es tun soll und nach jedem "X" Sekunden weckt es immer wieder – Moon
wie viel Speicher dieser "Invoke" wird nehmen, sagen wir, wenn das Elternformular hat viele UI-Controls n alle – Moon
Für den ersten Kommentar: Timer zum Formular hinzufügen. Feuert alle X Sekunden ab, wenn der Thread noch nicht aktiv ist und einen neuen Thread erstellt (Threads können nicht wiederverwendet werden) ODER Schleife in der Thread-Methode und nach dem, was Sie tun müssen: Schlaf für X Sekunden (Sie müssen den Thread vorher beenden Schließen Sie das Formular !!) –