C#跨线程刷新界面
用委托和事件刷新UI红色的地方百度抄的,反正能用就是不理解,大佬能讲讲吗
跟代码发现只执行else那部分,那最终的值是怎么到text中的
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void Message (string mes);
private event Message message1;
private event Message message2;
private void buttonX1_Click(object sender, EventArgs e)
{
Task task1 = new Task(() => {
message1.Invoke("task1启动");
Thread.Sleep(1000);
for (int i = 0; i < 10;i++ )
{
message1.Invoke(i.ToString());
Thread.Sleep(1000);
}
});
Task task2 = new Task(() =>
{
message2.Invoke("task2启动");
Thread.Sleep(1000);
for (int i = 0; i < 10; i++)
{
message2.Invoke(i.ToString());
Thread.Sleep(1000);
}
});
task1.Start();
task2.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
message1+=new Message(Form1_message1);
message2 += new Message(Form1_message2);
}
private void Form1_message1(string sender)
{
if (!this.InvokeRequired)
{
textBoxX1.Text = sender;
}
else
{
this.BeginInvoke(new Message(Form1_message1), sender);
}
}
private void Form1_message2(string sender)
{
if (!this.InvokeRequired)
{
textBoxX2.Text = sender;
}
else
{
this.BeginInvoke(new Message(Form1_message2), sender);
}
}
}
}