咨询区
-
Homam:
我先说一下我的顾虑,是这样的,我有一个 windows service 服务在不断的写入日志,同时我还有个看板程序在不断的获取 windows service 程序写入的日志。
问题是:service 程序在写日志的时候会 lock 文件,看板程序在读取的时候也会 lock 文件,这就很尴尬了,经常遇到进程被占用的异常。
Just So So ...
我先说一下我的顾虑,是这样的,我有一个 windows service 服务在不断的写入日志,同时我还有个看板程序在不断的获取 windows service 程序写入的日志。
问题是:service 程序在写日志的时候会 lock 文件,看板程序在读取的时候也会 lock 文件,这就很尴尬了,经常遇到进程被占用的异常。
在我分析的 200+ dump 中,同样会遵循着 28原则,总有那些经典问题总是反复的出现,有很多的朋友就是看了这篇 一个超经典 WinForm 卡死问题的再反思
找到我,说 WinDbg 拦截 System_Windows_Forms_ni System.Windows.Forms.Application+MarshalingControl..ctor
总会有各种各样的问题,而且 windbg 也具有强侵入性,它的附加进程方式让很多朋友望而生畏!
这一篇我们再做一次反思,就是如何不通过 WinDbg 找到那个 非主线程创建的控件,那到底用什么工具的?对,就是用 Perfview 的墙钟模式。
为什么 IEnumerable
接口没有 ForEach
扩展方法?我观察到能获取 ForEach 方法的类是 List<>
,有谁知道这么设计的原因吗,是为了性能?
ForEach
方法其实在 Linq 之前就已经存在了,如果这时候在 IEnumerable 上添加 ForEach 扩展方法的话会出现什么结果呢?大家应该知道扩展方法的优先级是低于同名的非扩展方法,这就意味着 IEnumerable 下的 ForEach 永远得不到调用。
异常处理
是一种处理运行时错误的技术,而 异步编程
允许我们在处理资源密集型的业务逻辑时不需要在 Main 方法或者在 执行线程 中被阻塞,值得注意的是,异步方法和同步方法的异常处理机制是不一样的,本篇我们就来讨论下如何在异步方法中处理异常。
在同步代码中抛出异常,它会一直以冒泡的方式往上抛,直到遇到可以处理这个异常的 catch 块为止,可以想象,异步方法中的异常抛出肯定要比这个复杂。