一:背景 1. 讲故事 前些天把 .NET 高级调试 方面的文章索引到 github 的过程中,发现了一个有意思的评论,详见 文章,截图如下: 大概就是说在 Winform 的主线程下执行 Task.Result 会造成死锁,我也看了图中的参考链接, Stephen 是绝对的大佬,不过这篇文章对死锁的成因主要还是大段的文字灌输,没有真的让你眼见为实,那这篇我就从 windbg 的角度来给它剖析下. 二: windbg 分析 1. 真的会死锁吗? 看文章看截图貌似真的会死锁,当然我多年不玩 win…
在如下代码中: public async Task<string> GetData() { return await DoWork(); } 在UI线程中调用 var data = GetData().Result; 此时线程会卡死: 两种解决办法: 1,所有调用方法链中使用async.await方式调用. var data = await GetData(). 2, 去掉调用链中的async,await,直接返回Task类型. public Task<string> GetDat…
网上关于async/await的知识有很多,看了很多但不如自己实践一遍来得快,所以这里记录下我的理解和大家学习下. 首先以最简单的同步方法来开始如下 private static void Test() { Console.WriteLine(); GetV(); Console.WriteLine(); } private static void GetV() { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); }…
代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码…
这两天公众号项目上线,刚开始项目运行没什么问题,但几天之后,访问量激增,服务器崩溃了,每次请求都返回502,一脸懵逼,无从下手,赶紧开日志里的BUG,拿出来一个个改,BUG都改完之后,没有明显的效果,赶紧网上找资料,找了很多找到了这个罪魁祸首,就是Task.Result,原因如下. IIS连接池连接数有限,高并发的情况下多余的请求会处于排队状态,特别是Task.Result会阻塞请求线程,造成了IIS线程池的资源浪费,解决方案,使用异步接口async/await,这样会很快的释放请求线程,节约资…
你是否曾经与我一样不理解async,await与task.wait()或者task.Result的区别? 接下来,一个Demo让你看出他们之间的区别. static void Main(string[] args) { Console.WriteLine("start"); Test(); //不等待 Console.WriteLine("end"); Console.Read(); } static Task<int> Sleep() { Consol…
前几天在用线程池执行一些任务时运到一种情形,就是回调方法中使用到了异步方法,但是回调方法貌似不支持async await的写法.这时候我应该如何处理呢?是使用Task.Result来获取返回结果,还是使用GetAwaiter.GetResult()呢?本文就来探讨下吧. 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/13168337.html 这里先上我这种场景的伪代码: ThreadPool.QueueUserWorkItem(ExcuteScan…
今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //return; //需要吗? } .... } 为了回答这个问题,我编写了几段代码测试了一下,结果如下: //代码1 public sta…
http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 简单,一个调用完成你要的全部功能 方便,你需要的代码已经准备好了 定义数据实体类型不再是费力的体力劳动 通用,可以非常简单地实现对多种数据库的支持 灵活,SQL语句放在哪里随便你 XmlCommand是什么? 可监控,图形的工具会告诉你每个数据访问的细节 关于示例代码 最近花了二个月的业余时间重写了…
作者:吴香伟 发表于 2014/08/07 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本文不讲解Markdown的语法规则,只关注它带来的好处以及我使用的方法.语法规则可以参考Markdown: Syntax. 文档内容和格式分离 使用Word写文档总花费很多时间在调整格式,并且往往最终也没让自已满意.这对有洁癖的人来说痛苦非常.Markdown只通过几个简单的符号表示文档的格式,比如##代表二级标题,**X**代表强调内容X,*X*代表X的字体为斜体…