问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c# 多线程 新开子线程中暂停,调用主线程控件,如何防止UI阻塞?

发布网友 发布时间:2022-06-14 20:44

我来回答

2个回答

热心网友 时间:2023-10-21 00:36

1.新开的线程是无法直接访问UI控件的,如果需要访问,可以通过控件的Invoke方法,或者用

System.Threading.SynchronizationContext.Current.Post方法

2.一定不要在控件的内部事件处理方法里面使用Sleep等线程暂停方法!

像我这样写就不会阻塞了:

private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread thread = new System.Threading.Thread(() =>
{
while (true)
{
this.Invoke(new Action(() =>
{
label1.Text = (count++).ToString();
}));
System.Threading.Thread.Sleep(100);
}
});
thread.IsBackground = true;
thread.Start();
}

你把setmess这个线程方法Invoke到了UI的主线程上了,而这个线程里面有暂停方法,所以呢主线程也会暂停卡住。
而我的方法只是把“label1.Text = (count++).ToString();”Invoke到主线程,而那个新的线程并没有Invoke到主线程,所以在那个线程里面使用暂停就没事了!

假如有一个操作比较费时,或者需要等待之类的,就像我这样开始一个新的线程,所以的等待操作,费时的操作都在在这个线程里面做,当这些线程需要访问UI控件的时候,就用this.Invoke()这个方法!

热心网友 时间:2023-10-21 00:36

又是多线程,新开的子线程要访问主线程的UI必须借用委托,不然.net的线程安全机制会报错说不支持跨线程操作。搞个例子给你看看。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 在service中新开线程和直接新开线程效果有什么不同? 在Service中新开线程和直接新开线程的区别与意义 sfv是什么格式 sfv格式的有什么用? sfv格式的介绍 怎么打开sfv的文件? 标致308油箱打不开有什么应急措施 黄瓜雌花少是什么原因? 在环评机构实习一般都做什么工作?编写毕业实习鉴定报告用的,我是地理信息系统专业的。 思乡的诗句2到3句 求洪雅的色妹子出来耍,有没有? 农村土地承包合同到期还能续吗 农村土地三十年到期怎么办 填空题:五种基本味觉为:___、___、___、___和__ 对于低碳钢的熔化焊对接工艺,请说明影响焊接接头质量的因素有哪些 刘晓庆今年多少岁了 刘晓庆今年多大年纪啦 刘晓庆是1950年出生的吗 刘晓庆多少岁了 1一3岁短发怎么扎好看头发少 C#新开一个线程取到数据,如何更新到主线程UI 在C#中new一个实例,就是新开一个线程吗?? 新开一个线程事务怎么控制 思乡的句子和古诗 炖羊汤放什么香料好 大四学生出来实习 暂时不想签订三方协议 那应该签什么来保障双方权益呢?劳动合同现在应该签定不了吧? 怎样鉴别摩托罗拉E6电池的真伪? e6现在手机电池需要一天两次充电,可以更换电池吗 新买的金立E6手机第一次充电之前要把电池用完用尽嘛? 关于摩托罗拉E6手机电池的问题??? MOTOE6的新电池充电要充多久? E6手机电池充电问题 思乡的诗歌有哪些 谢谢 找点马上用 签半年实习合同日期怎么写 广州哪些正规医院可以做植发手术 二九合数双是什么数字求解答 2,9既是质数、合数又是什么数 十字狂魔 又叫恶夜追杀令 英文名resurrection 据说可以媲美七宗罪!!! 我的打印机是 爱普生R230,我用一体机扫描了一张带有公章的文件, 为什么我打印出来颜色发暗,黑色发蓝呢 派出所拒绝警校生了实习怎么写