fbwcpu 发表于 2019-1-18 10:30:43

C#中如何在线程中更新十几个控件标签?

我知道能用委托,但是一次只能一个    如何在C# 在线程中更新个十几个控件标签?

墨非 发表于 2019-1-18 10:40:44

你怎么调用委托的啊??

一直这样用啊
Task tk1 = new Task(() =>
{
    this.Invoke((MethodInvoker)delegate
    {
      TextBox1.Text = "1";
      TextBox2.Text = "1";
      Button1.Text = "Open";
    });
});

tk1.Start();

dreampet 发表于 2019-1-18 10:54:16

你怎么调用委托的啊???
EventHandler UpdateUI = delegate
{
      TextBox1.Text = "1";
      TextBox2.Text = "1";
      Button1.Text = "Open";
};
try { Invoke(UpdateUI); } catch { };

fbwcpu 发表于 2019-1-18 11:24:55

dreampet 发表于 2019-1-18 10:54
你怎么调用委托的啊???

你这个方法你测试了可以用吗?

fbwcpu 发表于 2019-1-18 21:36:19

墨非 发表于 2019-1-18 10:40
你怎么调用委托的啊??

一直这样用啊


你这么用,可以更新几十个控件没问题吧?

chenchaoting 发表于 2019-1-18 21:48:11

楼上没问题,想多了,怎么改都是要用Cpu的

WorldFly 发表于 2019-1-18 22:00:26

Invoke((Action)(()=>
{
    label.Text = "";....
}));

zyqcome 发表于 2019-1-19 05:35:17

跨线程,需要切换到主线程更新控件

fbwcpu 发表于 2019-1-19 09:02:42

zyqcome 发表于 2019-1-19 05:35
跨线程,需要切换到主线程更新控件

方法我知道。。。只是问如何跨线程同时更新几十个标签控件?

yangff 发表于 2019-1-19 10:27:34

fbwcpu 发表于 2019-1-19 09:02
方法我知道。。。只是问如何跨线程同时更新几十个标签控件?

invoke之后你想更新几个就更新几个啊

hyz_avr 发表于 2019-1-19 10:31:31

难道不是在invoke里面想更新几个都可以吗?

小Z 发表于 2019-1-19 10:39:38

i用nvoke,随意更新

xstt 发表于 2019-1-19 13:46:19

invoke之后你想更新几个就更新几个啊+1 (LZ不明白就直接搞的?)

zyqcome 发表于 2019-1-19 21:39:42

fbwcpu 发表于 2019-1-19 09:02
方法我知道。。。只是问如何跨线程同时更新几十个标签控件?


用个链表把标签引用存起来,更新的时候遍历即可,注意最好不要用fearch


wpf 用数据绑定,多个标签控件,绑定到动态链表上,刷新链表即可

还可以其他实现
页: [1]
查看完整版本: C#中如何在线程中更新十几个控件标签?