最近的项目上,c#的多线程把我弄得迷迷糊糊的。多线程的调试,尤其是涉及到时间相关的,是真的难调。如果不能稳定复现,那就是难上加难。当然根本原因还是我对多线程还是不熟悉,大多数时候都是照葫芦画瓢。

前几天调试我都是图方便用Console.WriteLine来跟踪程序运行状态的变化。但是看着输出的结果,真的是。。只能用神奇来形容。左看右看怎么也看不出来我的代码怎么可能得到这样的运行结果??

今天终于痛下决心,不用Console.WriteLine来输出信息,改用异步队列。想要输出信息的时候给队列加个锁往里面扔信息,单独开一个线程专心把队列里面的信息写入到文件。终于终于!我确定了不是我程序的问题,是Console.WriteLine的问题!!

Console.WriteLine的输出如下所示

异步队列产生的日志文件是酱紫的:

正常和不正常一目了然。

以后要记住,多线程的程序,还是老老实实用多线程日志库或者手写一个多线程的消息队列。别信Console.WriteLine!!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注