NET问答: 如何实现读写 file 的时候不用锁模式?

咨询区

  • Homam

我先说一下我的顾虑,是这样的,我有一个 windows service 服务在不断的写入日志,同时我还有个看板程序在不断的获取 windows service 程序写入的日志。

问题是:service 程序在写日志的时候会 lock 文件,看板程序在读取的时候也会 lock 文件,这就很尴尬了,经常遇到进程被占用的异常。

阅读剩余部分

一个超经典 WinForm 卡死的最后一次反思

一:背景

1. 讲故事

在我分析的 200+ dump 中,同样会遵循着 28原则,总有那些经典问题总是反复的出现,有很多的朋友就是看了这篇 一个超经典 WinForm 卡死问题的再反思 找到我,说 WinDbg 拦截 System_Windows_Forms_ni System.Windows.Forms.Application+MarshalingControl..ctor 总会有各种各样的问题,而且 windbg 也具有强侵入性,它的附加进程方式让很多朋友望而生畏!

这一篇我们再做一次反思,就是如何不通过 WinDbg 找到那个 非主线程创建的控件,那到底用什么工具的?对,就是用 Perfview 的墙钟模式。

阅读剩余部分

C#为什么 IEnumerable 没有提供 ForEach ?

咨询区

  • Cameron MacFarland

为什么 IEnumerable 接口没有 ForEach 扩展方法?我观察到能获取 ForEach 方法的类是 List<>,有谁知道这么设计的原因吗,是为了性能?

回答区

  • aku

ForEach 方法其实在 Linq 之前就已经存在了,如果这时候在 IEnumerable 上添加 ForEach 扩展方法的话会出现什么结果呢?大家应该知道扩展方法的优先级是低于同名的非扩展方法,这就意味着 IEnumerable 下的 ForEach 永远得不到调用。

阅读剩余部分

如何使用 C# 在异步代码中处理异常

异常处理是一种处理运行时错误的技术,而 异步编程 允许我们在处理资源密集型的业务逻辑时不需要在 Main 方法或者在 执行线程 中被阻塞,值得注意的是,异步方法和同步方法的异常处理机制是不一样的,本篇我们就来讨论下如何在异步方法中处理异常。

异步方法 VS 同步方法 的异常处理

在同步代码中抛出异常,它会一直以冒泡的方式往上抛,直到遇到可以处理这个异常的 catch 块为止,可以想象,异步方法中的异常抛出肯定要比这个复杂。

阅读剩余部分