如何在后台连续运行 C# 控制台应用程序
Posted
技术标签:
【中文标题】如何在后台连续运行 C# 控制台应用程序【英文标题】:how to continuously run a c# console application in background 【发布时间】:2013-06-30 00:21:36 【问题描述】:我想知道如何每隔五分钟在后台运行一个 c# 程序。下面的代码不是我想作为后台进程运行的,而是想找出使用此代码执行此操作的最佳方法,以便我可以在另一个代码上实现它。所以这个过程应该在五分钟增量后运行。我知道我可以使用线程来做到这一点,但现在真的不知道如何实现这一点。我知道这是How to run a console application on system Startup , without appearing it on display(background process)? 在后台运行的最佳方式,但是我如何让代码以五分钟的增量运行
class Program
static void Main(string[] args)
Console.Write("hellow world");
Console.ReadLine();
【问题讨论】:
如果应用中没有输出,你应该考虑创建一个服务来代替。 如果应用中没有输出,为什么写Console.Write
?
这是同一个问题***.com/questions/2686289/…
或使用 windows schedule 每 5 分钟运行一次
使用 TopShelf 制作 windows 服务,然后在 While(true) 范围内放置 Thread.Sleep(5*60*1000)
【参考方案1】:
此应用应连续运行,每 5 分钟发出一条消息。 这不是你想要的吗?
class Program
static void Main(string[] args)
while (true)
Console.Write("hellow world");
System.Threading.Thread.Sleep(1000 * 60 * 5); // Sleep for 5 minutes
【讨论】:
@Cemafor 他在我发表评论后编辑了答案。无论时间间隔如何,他的初始代码都会运行。我已将其删除,因为它不再相关 你为什么需要一段时间while(true)
将导致循环永远运行或直到您终止应用程序..
虽然需要 true 才能让应用程序到达终点。
Console.Write
将每 5 分钟运行一次。将该行替换为您希望每 5 分钟运行一次的任何其他代码/功能。【参考方案2】:
为什么不直接使用Windows Task Scheduler?
将其设置为以所需的时间间隔运行您的应用。它非常适合这类工作,您不必为强制线程休眠而烦恼,这可能会产生更多它解决的问题。
【讨论】:
【参考方案3】:每 X 分钟“触发”一个新进程的最简单方法可能是使用Windows Task Scheduler。
您当然可以以编程方式执行类似的操作,例如创建您自己的服务,每 X 分钟启动一次控制台应用程序。
所有这一切都假设您确实想在下一次迭代之前关闭应用程序。或者,您可以一直保持它处于活动状态。您可以使用one of the timer classes 定期触发事件,甚至在非常简化的场景中使用Thread.Sleep
....
【讨论】:
【参考方案4】:使用System.Windows.Threading.DispatcherTimer 怎么样?
class Program
static void Main(string[] args)
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 5, 0); // sets it to 5 minutes
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
static void timer_Tick(object sender, EventArgs e)
// whatever you want to happen every 5 minutes
【讨论】:
您只需要在此处阻止关闭控制台应用程序即可。 在末尾加上Console.ReadLine()
,它将继续运行。以上是关于如何在后台连续运行 C# 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章