最近這一陣子在寫 Thread 的程式
常常會需要將 Thread 的結果輸出到主視窗中
目前有兩個方法可以在 Thread 中修改主視窗中的物件屬性
物件像是例如 Listbox、TextBox、RichTextBox 等等
方法一
最簡單但是不建議
因為會導致程式不穩定當掉
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RichTextBox.CheckForIllegalCrossThreadCalls = false;
}
}
{
public Form1()
{
InitializeComponent();
RichTextBox.CheckForIllegalCrossThreadCalls = false;
}
}
只要在 Form1 設定屬性 CheckForIllegalCrossThreadCalls = false 就好了
方法二
推薦的方法
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
{
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();
}
}
}