【问题标题】:Difference between Console App vs Win Form App in context of performance?Console App 与 Win Form App 在性能方面的区别?
【发布时间】:2012-11-19 10:36:21
【问题描述】:

我有一个控制台应用程序,它在其控制台上显示最新的活动和状态。该应用程序具有大量线程,性能是主要关注点。不需要用户交互。由于最近的一个案例,我被要求将其迁移到 win 表单应用程序。

初始帖子-> How to programmatic disable C# Console Application's Quick Edit mode?

所以为了遇到这个问题,我使用了 Application.Run(ApplicationContext context) 在我的控制台应用程序中启动一个消息循环,以便我可以挂钩和捕获鼠标事件,并可以在运行时重置快速编辑模式。我还删除了右键单击时出现的控制台默认菜单项“编辑”,因此不允许用户标记/复制/粘贴。

我想知道最佳解决方案应该是什么,迁移到 win 表单或控制台应用程序(考虑到我所做的更改)。此外,我每次都需要调用 Invoke 以便将任务放入 UI 的队列中,以便在迁移到 winform 时打印消息。

【问题讨论】:

  • 我说得对吗?迁移到 Winforms 的唯一原因是您想防止用户干扰输出?因此,您向应用程序添加 GUI 是因为您真的想要一个?听起来有线。
  • 完全正确!! :) 发生过一次,我们的应用程序处于活动状态,并且控制台由于进入快速编辑模式而停止。

标签: c# winforms console mouseevent


【解决方案1】:

WinForms 肯定会给您更多的灵活性,让您可以使用 UI 进行哪些操作。

在性能方面,您确实需要进行大量 UI 更新,才能使性能成为一个问题。听起来情况并非如此,因为您目前正在使用控制台应用程序完成它。大多数时候,影响 UI 性能的不是因为 UI 线程跟不上更新,而是因为非 UI 的东西(例如文件 IO、数据库查询等)是在 UI 线程内完成的。

【讨论】:

    【解决方案2】:

    我会考虑更改您的应用程序,以便将其输出流式传输到日志文件、轻量级数据库或Windows event log,而不是到控制台。因此,您的应用程序根本不需要控制台或 UI,也可以作为服务运行。如果有人想查看该消息,给他一个单独的(可能是 Winforms)程序来查看最新的输出,或者如果你使用 Windows 事件日志,他可以只使用 Windows 事件查看器来检查你的程序的输出。

    因此,您不必将应用程序迁移到 Winforms,也不必进行一些丑陋的控制台黑客攻击。

    要处理日志文件,您可能会对Microsoft log parser 感兴趣。

    【讨论】:

    • 谢谢,这是有用的情报。在 App 中,日志记录也与在控制台 UI 上打印一些关键事件消息一起完成。要查看一些实时的关键事件,最少的控制台或 ListView 是必不可少的。
    • @Himanshu:我想这只是一些迷信。如果这些“时间关键事件”是由人工监控的,那么时间限制就会很低,并且绝对没有理由不能在单独的应用程序中完成事件显示,从日志中获取数据。
    • 是的,你是对的,它可以是一个最佳解决方案,使用单独的日志查看器应用程序来显示来自日志的数据。
    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2015-03-14
    相关资源
    最近更新 更多