2012-12-01 25 views
0

我有一个控制台应用程序,显示最新活动的控制台上&状态。该应用程序是严重线程&性能是主要关注的问题。不需要用户交互。由于最近的一个案例,我被要求将它迁移到一个胜利形式的应用程序。控制台应用程序与Win Form App在性能环境中的区别?

战后初期 - > How to programmatic disable C# Console Application's Quick Edit mode?

所以遇到,我已经使用Application.Run(ApplicationContext的情况下),从而开始在我的控制台应用程序的消息循环问题,这样我可以钩捕获鼠标事件和可以在运行时重置快速编辑模式。我还删除了右键单击出现的控制台默认菜单项“编辑”,因此不允许用户标记/复制/粘贴。

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

+1

我收到了吗 - 仅向**迁移的原因是,您希望**阻止**用户干扰输出?所以你要为应用程序添加一个GUI,因为你真的**不需要**。听起来有线。确切地说,是 –

+0

! :)它发生过一次,因为进入快速编辑模式,我们的应用程序正在运行并且控制台停止。 – Himanshu

回答

2

的WinForms肯定会给你,你可以与UI做了更多的灵活性。

在性能方面,你真的需要做很多的UI更新,以使性能成为一个问题。听起来好像不会这样,因为你目前正在使用控制台应用程序完成它。在大多数情况下,用户界面性能会受到影响,不是因为UI线程不能更新跟不上,但由于非UI的东西(例如文件IO,数据库查询等)在UI线程中完成的。

1

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

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

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

+0

谢谢,这是有用的英特尔。在应用程序中,日志记录还可以在控制台UI上打印一些关键事件消息。最少的控制台或ListView对于查看一些实时关键事件至关重要。 – Himanshu

+0

@Himanshu:我想这只是一些迷信。如果这些“时间关键事件”受到人类监控,时间限制较低,并且绝对没有理由不能在单独的应用程序中完成事件显示,从日志中获取数据。 –

+0

是的,你是对的,可以用一个单独的日志查看器应用程序来显示来自日志的数据的最佳解决方案。 – Himanshu

相关问题