0

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

初始帖子-> 如何以编程方式禁用 C# 控制台应用程序的快速编辑模式?

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

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

4

2 回答 2

2

WinForms 肯定会给你更多的灵活性,你可以用 UI 做什么。

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

于 2012-12-01T10:12:14.540 回答
1

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

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

要处理日志文件,您可能会对Microsoft 日志解析器感兴趣。

于 2012-12-01T10:36:46.307 回答