Ich kann nicht herausfinden, wie Sie eine C# Windows Form-Anwendung aus einem Thread in ein Textfeld schreiben können. Zum Beispiel in der Program.cs haben wir die Standard-main(), die die Form zieht:Schreiben in eine TextBox von einem anderen Thread?
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Dann haben wir in der Form1.cs haben:
public Form1()
{
InitializeComponent();
new Thread(SampleFunction).Start();
}
public static void SampleFunction()
{
while(true)
WindowsFormsApplication1.Form1.ActiveForm.Text += "hi. ";
}
Bin ich über diese völlig falsch gehen?
UPDATE
Hier ist das Arbeitscodebeispiel aus bendewey bereitgestellt:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new Thread(SampleFunction).Start();
}
public void AppendTextBox(string value)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(AppendTextBox), new object[] {value});
return;
}
textBox1.Text += value;
}
void SampleFunction()
{
// Gets executed on a seperate thread and
// doesn't block the UI while sleeping
for(int i = 0; i<5; i++)
{
AppendTextBox("hi. ");
Thread.Sleep(1000);
}
}
}
ich Ihren Code versucht, und es ist nicht ganz für mich zu arbeiten. Ich schätze die Antwort, Kumpel. –
Genauer kompiliert es, aber die TextBox wird nicht kontinuierlich geschrieben. –
Kannst du den Code eingeben, den du versuchst? – bendewey