源码如下:

        private void action_Click(object sender, RoutedEventArgs e){Task t = new Task(() =>{for (int i = 0; i < 10; i++){Thread.Sleep(1000);this.Dispatcher.Invoke(() =>{lblStr.Content = i.ToString();});manualResetEvent.Set();Console.WriteLine(Thread.CurrentThread.ManagedThreadId);}});t.Start();t.Wait();MessageBox.Show("123");}

正常屏蔽掉t.Wait();时,点击按钮,界面label会显示1到9,间隔1秒,

但是加上 t.Wait();直接就卡这里了。

修改为用ManualResetEvent等待,也是一样的效果

  ManualResetEvent manualResetEvent = new ManualResetEvent(false);private void action_Click(object sender, RoutedEventArgs e){Task t = new Task(() =>{for (int i = 0; i < 10; i++){Thread.Sleep(1000);this.Dispatcher.Invoke(() =>{lblStr.Content = i.ToString();});manualResetEvent.Set();}});t.Start();//t.Wait();manualResetEvent.WaitOne();MessageBox.Show("123");}

然后在群里请教了几位大佬,大佬说是死锁了,指导用async和await去做

        private void action_Click(object sender, RoutedEventArgs e){TaskTest();}public async void TaskTest(){await Task.Run(() =>{for (int i = 0; i < 10; i++){Thread.Sleep(1000);this.Dispatcher.Invoke(() =>{lblStr.Content = i.ToString();});}});MessageBox.Show("123");}

亲测,可以正常工作。

在此特别感谢七里听香林德桢二位大佬的指点!

想进技术交流群的加微信zls20210502(可以扫描下方二维码),这里没有套路,没有广告,只为打造纯净的技术交流群,(想进群捣乱打广告的免加,会有技术考核,别白费心思

C# 无意间写了一段线程死锁的代码相关推荐

  1. 用C++写的一段电话录音程序代码

    用C++写的一段电话录音程序代码 //--------------------------------------------------------------------------- #incl ...

  2. 用java代码怎样打开网址_写了一段打开网页java代码报错: 求大神解救

    报错内容:Exceptioninthread"main"org.openqa.selenium.WebDriverException:Unabletobindtolockingpo ...

  3. iOS之深入探究多线程实现、线程安全和线程死锁

    一.线程与进程 ① 线程与进程的定义 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行: 进程要想执行任务,必须得有线程,进程至少要有一条线程: 程序启动会默认开启一条线程,这条线程被 ...

  4. java线程死锁 cpu 100%_一文学会Java死锁和CPU 100% 问题的排查技巧

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开 工欲善其事,必先利其器 00 本文简介 作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在 ...

  5. Map集合 File类 递归 序列化 常用类 进程线程 死锁

    一.Map集合 将键映射到值得对象,键得值不能重复,一个键可以对应最少一个值. Map接口下的封装好得实现类 –|HashMap –|TreeMap 1.Map接口下的方法 增://将指定得值与该映射 ...

  6. java线程死锁 cpu 100%_Java死锁排查和Java CPU 100% 排查的步骤整理

    工欲善其事,必先利其器 简介 本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多:第二个是java cpu 100%排查,这个 ...

  7. 网络瓶颈、线程死锁、内存泄露溢出、栈堆、ajax

    网络瓶颈:网络传输性能及稳定性的一些相关元素 线程死锁:多个线程因竞争资源造成的一种僵局 下面我们通过一些实例来说明死锁现象. 先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥 ...

  8. linux系统如何查看是否是线程死锁,多线程中如何使用gdb精确定位死锁问题

    本文转载自微信公众号「程序喵大人」,作者程序喵大人 .转载本文请联系程序喵大人公众号. 在多线程开发过程中很多人应该都会遇到死锁问题,死锁问题也是面试过程中经常被问到的问题,这里介绍在c++中如何使用 ...

  9. 只因写了一段爬虫,公司200多人被抓 ?

    "一个程序员写了个爬虫程序,整个公司200多人被端了." "不可能吧!" 刚从朋友听到这个消息的时候,我有点不太相信,做为一名程序员来讲,谁还没有写过几段爬虫呢 ...

最新文章

  1. 2021-03-26习题4-7 最大公约数和最小公倍数 (15 分)
  2. 面了一个47的程序员,我很慌...
  3. 个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
  4. Git 什么时候用什么指令
  5. yii2 mysql_Yii2 数据库操作汇总
  6. MyEclipse 10优化技巧
  7. 行先知 为您的办公室管理提供方便
  8. AI释放数字经济潜能!思谋科技受邀出席2021全球数字经济大会
  9. JS逻辑运算符——短路逻辑
  10. ubantu下清除项目缓存的方法
  11. C/C++ 笔试、面试题目大汇总收藏(上)
  12. 四、数组定义/冒泡排序的理论/什么是方法
  13. 感量越大抑制频率约低_EDA365:开关电源 LC 滤波器设计
  14. Guthrie QA-CAD2019(CAD绘图修订管理工具)A.04中文版
  15. B站喷子脚本,bilibili喷人
  16. raptor的基本符号有_Raptor运算符号、函数、子过程介绍大全
  17. ENVI中使用水体指数法NDWI提取水体
  18. 传奇游戏架设与M2修改常见问题收集(大合集)
  19. 蓝牙模块的5大应用场景
  20. 全网最全的云原生存储 OpenEBS 使用指南

热门文章

  1. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数
  2. java数据结构与算法_清华大学出版社-图书详情-《数据结构与算法分析(Java版)》...
  3. 2d访问冲突_Light | 基于环形分隔微镜阵列的高速随机访问轴向聚焦系统
  4. Lie to me不错
  5. Microsoft Teams的Meet Now功能
  6. 如何还原桌面图标_如何为Windows 10桌面图标还原或更改文本的默认外观?
  7. mysql 面试知识点笔记(七)RR如何避免幻读及非阻塞读、范式
  8. Install Odoo 11 on CentOS 7
  9. pta l2-6(树的遍历)
  10. 常见的js算法面试题收集,es6实现