如何从非控制台应用程序项目写入控制台

时间:2012-03-25 20:53:46

标签: c# console

我有一个sln,其中一个consile应用程序是thr解决方案的首发。

如何从库项目登录到控制台?

(我的意思是dll项目有可能不允许这样做,

因为它并不总是由控制台应用程序运行。有时候通过其他框架,没有?)

3 个答案:

答案 0 :(得分:4)

技术上任何代码都可以使用System.Console类写入控制台。但是,由于多种原因,图书馆执行此操作并不是一种好的形式,包括:

  • 写入控制台的成本相对较高,因为同步目的需要进程范围的锁定
  • 从库中写入控制台可能会惹恼从控制台应用程序中消耗该库的任何人。它可能会使图书馆成为一种障碍,不会在这样的背景下使用

相反,您通常会使用日志抽象,例如System.Diagnostics.TraceSwitchlog4net等日志库提供的抽象抽象。然后,您可以将应用程序配置为将日志记录语句重定向到控制台,另一个文件,数据库或您真正喜欢的任何内容。

答案 1 :(得分:0)

好吧,有几点。

如果你是dll写入控制台,而它是控制台应用程序的一部分,它实际上会写入控制台就好了。但是我认为你本能地知道你可能不应该从aa库那样做,因为正如你所说,你的客户端应用程序会想要以不同的方式呈现它,例如web应用程序为html,WPF应用程序为XAML等。

我建议您只是在库中提供一种机制,将您的消息作为字符串返回,然后将其留给客户端应用程序进行渲染。

答案 2 :(得分:0)

您还可以抽象出一个事件,以便类库在需要记录某事时发布事件;控制台应用程序可以订阅该事件并制作一个简单的Console.WriteLine()

有关详细信息,请参阅

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx