我正在創建一個基於Windows的應用程序,它從服務器下載數據。 我使用在不同的類上創建的後臺線程來執行這些下載操作。並且我想不斷地顯示富文本框上的下載狀態,即在主線程上。但是我無法做到這一點,請不要執行跨線程操作有效。 請幫我解決這個問題。在Form1.cs的從另一個類的後臺線程更新GUI控件
方法上demo.cs
public void UpdateRichText(string Text)
{
SetRichText(Text);
}
public delegate void SetRichTextTextDelegate(string text);
public void SetRichText(object number)
{
if (InvokeRequired)
{
this.BeginInvoke(new SetRichTextTextDelegate(SetRichText),text);
return;
}
richTextBox1.Text += number.ToString() + "\n";
}
private void button3_Click_1(object sender, EventArgs e)
{
demo d = new demo();
d.display();
}
方法
Form1 f = new Form1();
public void display()
{
Thread t = new Thread(new ThreadStart(call));
t.Start();
}
public void call()
{
//when i call this method every time if(InvokeRequired) is false.
f.UpdateRichText("Called from Thread");
}
它不工作,如果(richTextBox1.InvokeRequired)是假的 – user1699826
見進一步修改,將其更改爲調用我創建了執行所有下載操作另一大類的RichTextBox –
在上面的代碼中提到。 – user1699826