Code: C# 如何在 Thread 中修改 Main Form 的物件屬性

最近這一陣子在寫 Thread 的程式
常常會需要將 Thread 的結果輸出到主視窗中
目前有兩個方法可以在 Thread 中修改主視窗中的物件屬性
物件像是例如 Listbox、TextBox、RichTextBox 等等


方法一
最簡單但是不建議
因為會導致程式不穩定當掉

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RichTextBox.CheckForIllegalCrossThreadCalls = false;
}
}

只要在 Form1 設定屬性 CheckForIllegalCrossThreadCalls = false 就好了

方法二
推薦的方法

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private delegate void InvokeFunction(string str);
private void output2(string str)
{
if (this.richTextBox2.InvokeRequired)
this.Invoke(new InvokeFunction(this.output2), new object[] { str });
else
{
this.richTextBox2.Text += str + “\r\n”;
//捲軸置底
this.richTextBox2.SelectionStart = this.richTextBox2.Text.Length;
this.richTextBox2.ScrollToCaret();
}
}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *