gpt4 book ai didi

C# Windows 服务 While 循环

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:57 25 4
gpt4 key购买 nike

我的 Windows 服务有问题。

protected override void OnStart(string[] args)
{
while (!File.Exists(@"C:\\Users\\john\\logOn\\oauth_url.txt"))
{
Thread.Sleep(1000);
}
...

我必须等待一个特定的文件,因此 while 循环是必要的,但服务将无法像这样循环启动。我可以做些什么来获得正在运行的服务和检查文件是否存在的机制?

最佳答案

最好的选择是有一个计时器System.Timers.Timer为您服务。

System.Timers.Timer timer = new System.Timers.Timer();

在构造函数中为 Elapsed 事件添加处理程序:

timer.Interval = 1000; //miliseconds
timer.Elapsed += TimerTicked;
timer.AutoReset = true;
timer.Enabled = true;

然后在 OnStart 方法中启动该计时器:

timer.Start();

在事件处理程序中做你的工作:

private static void TimerTicked(Object source, ElapsedEventArgs e)
{
if (!File.Exists(@"C:\Users\john\logOn\oauth_url.txt"))
return;

//If the file exists do stuff, otherwise the timer will tick after another second.
}

最小的服务类看起来有点像这样:

public class FileCheckServivce : System.ServiceProcess.ServiceBase  
{
System.Timers.Timer timer = new System.Timers.Timer(1000);

public FileCheckServivce()
{
timer.Elapsed += TimerTicked;
timer.AutoReset = true;
timer.Enabled = true;
}

protected override void OnStart(string[] args)
{
timer.Start();
}

private static void TimerTicked(Object source, ElapsedEventArgs e)
{
if (!File.Exists(@"C:\Users\john\logOn\oauth_url.txt"))
return;

//If the file exists do stuff, otherwise the timer will tick after another second.
}
}

关于C# Windows 服务 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com