使用controlName.InvokeRequired属性判断是否需要用代理。
private void SetText(string text)
{
if (rtfLog.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
rtfLog.AppendText(text + Environment.NewLine);
}
}
这样,在线程函数中直接调用SetText("xxxx")即可。