【发布时间】:2013-09-19 13:45:25
【问题描述】:
我想将一个具有多种颜色的字符串放在控制台上,让它像单个 WriteLine 一样执行,而不是多个写入可能会被同时写入的其他线程中断或损坏。
所以下面的帖子看起来是朝着正确的方向发展,但我无法控制写入控制台的所有代码。我的代码仅限于我正在创作的 dll,所以我不能随便把锁放在任何可能干扰的地方。如果这是一个关于锁和对线程的理解的问题,那是毫无疑问的。如果没有锁定我的代码,这是否可能?
【问题讨论】:
-
有多少线程将写入控制台?您在代码中有多少个位置有
WriteLine调用。 ? -
我想我在没有锁的情况下运行得很好......但我知道事情可能会出错,这让我很烦恼。 ...但我们不知道将向控制台写入什么代码,而且我不能告诉其他开发人员“嘿,这样做时使用这个锁”(我宁愿让它在蓝月亮中出现错误) .但是,来自其他代码的消息分配似乎不太可能出现在控制台上,我无法控制。
-
我只有一行要写。诚然,它会经常受到打击,因为它是一个类似于我链接到的另一篇文章中的记录器行。
-
那么锁就够了。或者,如果您想要一个无锁 impl 使用
Queue并有一个线程池线程,该线程调度队列数据并写入控制台,然后在队列为空时退出,再次执行相同操作\ -
@Sriram Sakthivel 嗯,其他线程(我的 dll 之外的父进程)如何知道锁?
标签: c# multithreading windows-console console.writeline