首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的C#控制台应用程序中,有哪些用于长时间运行的进程的选项?

在我的C#控制台应用程序中,有哪些用于长时间运行的进程的选项?
EN

Stack Overflow用户
提问于 2012-01-07 08:39:37
回答 2查看 698关注 0票数 1

我正在开发一个控制台应用程序,它启动了一个相当长的运行过程(2-3分钟)。有哪些选项可用于显示进度,甚至只需写一个“”。每隔几秒钟进行一次筛选,这样用户就知道应用程序没有停止响应?我是桌面开发的新手,所以请耐心听我说。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-07 08:56:33

你有(至少)3种方法可以做到这一点:

  • 最简单:在程序启动时,将一个全局变量设置为false,然后启动一个线程,该线程向控制台写一个点,Thread.Sleep()s秒重复,直到该变量设置为true。在您的主线程上执行您的工作,完成后将变量设置为true,然后连接()另一个线程。
  • 仍然很简单:在混合中添加另一个全局变量,输入

。在你的工作线程中增加它,只要有一些进展,在控制台写入器线程上减少间隔到250ms,但是只有在进度计数器改变的情况下才画一个点。这给出了一个关于你的应用程序进度有多快的想法一个有点先进的方法:创建一个布尔值,就像第一步中的那样加上一个AutoResetEvent,让控制台编写器线程重复等待事件,当应用程序使

  • ()事件时。完成后,将boolean设置为true,并在Join()之前再次设置()。其中更高级的部分是知道应该在哪些部分报告进度。
票数 1
EN

Stack Overflow用户

发布于 2012-01-07 08:56:11

最简单的方法是,如果您的应用程序有一个增量循环,那么您可以在控制台上放置一个简单的句号。不是很好,但它确实给出了“我还活着”的暗示。

但是,这种方法可能会导致太多的信息(太多的字符进入控制台)或太少,因为您钩住了一点代码,而这些代码实际上并没有责任。

因此,您可以重用的一种更好的方法是创建一个控制台用户类,它在一个线程中运行,运行时间为1秒。它可以使用退格和好的旧的|/|/-序列来给人一种旋转的感觉。它还可以检查按键是否允许用户退出。

另一种选择是使用像NLog这样的日志记录框架,这取决于用户的性质。这样,您的实现是独立于UI的,并且您可以或多或少地在运行时在控制台、从另一台机器或其他机器中查看正在发生的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8766316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档