报告一百万个呼叫流程的进度

时间:2013-10-29 01:01:50

标签: c#-4.0 logging console-application progress

我有一个控制台/桌面应用程序,可以从各种Web服务中抓取很多(想想百万次调用)数据。在任何给定时间,我有大约10个线程执行这些调用并将数据聚合到MySql数据库中。所有种子也存储在数据库中。

报告进度的最佳方式是什么?按进展我的意思是:

  • 已执行了多少次通话
  • 失败多少
  • 平均通话时长是多少
  • 剩下多少

我考虑以某种方式记录所有这些并拖尾日志以获取数据。另一个想法是向一个始终开放的TCP端点提供某种输出,其中某种形式的UI可以读取数据并显示一些聚合。两种方式都看起来太粗糙和太复杂。

还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

“最佳方式”取决于您的要求。如果使用NLog之类的日志记录框架,则可以插入各种日志目标,如文件,数据库,控制台或TCP端点。

您还可以使用Harvester之类的查看器作为记录目标。

在记录多线程应用程序时,我有时会有一个额外的线程,每隔一段时间(例如每15秒)将一次进度摘要写入记录器。

答案 1 :(得分:1)

因为它是一个控制台应用程序,只需使用Writeline,只需让应用程序将重要的东西吐出到控制台。

我在export PDF's from a SQL Server Database back into PDF Format

创建的应用程序中做了类似的事情

你可以通过许多不同的方式做到这一点。如果你正在计算记录和它们的大小,你可以运行各种记录并让它显示每一个记录的总数。


我还写了文本文件,这样我就可以跟踪所有PDF以及他们去过的案例编号等等。这些信息是我对上述链接问题给出的答案。

你也可以经常用统计数据写出文本文件。

提及 Eric J。的记录器可能会更容易实现,并且对于您的工具箱来说将是一个不错的工具。

这些选项同样有效,具体取决于您的具体需求。