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
运行结果如下: