UI布局如下
委托定义如下:
public delegate void SetMessageDelegate(string message);
From1的代码如下:
public partial class Form1 : Form {
SetMessageDelegate setMessageDelegate = null;
public Form1()
{
InitializeComponent();
setMessageDelegate += SetMessageMethod; //注册委托回调
Console.WriteLine("UI初始化线程Id:" + Thread.CurrentThread.ManagedThreadId);
}
public void SetMessageMethod(string message)
{
Console.WriteLine("UI线程Id:" + Thread.CurrentThread.ManagedThreadId);
this.textBox1.Text = message;
}
private void button1_ClickAsync(object sender, EventArgs e)
{
Task.Run(() =>
{
Console.WriteLine("Task子线程Id:" + Thread.CurrentThread.ManagedThreadId);
this.button1.Invoke(setMessageDelegate, "要传递的数据");
//this.textBox1.Invoke(setMessageDelegate, "用textBox1的Invoke也行");
});
}
}
public delegate void SetMessageDelegate(string message);
代码太简单了,不解释,注意观察输出的线程Id
运行结果如下: