gpt4 book ai didi

c# - 如何在C#/.NET2.0中实现等待一段时间的windows服务循环

转载 作者:太空狗 更新时间:2023-10-29 22:10:04 27 4
gpt4 key购买 nike

我的问题是,这是执行此操作的最佳做​​法吗?找不到任何好的例子。我在 VS2005 创建的文件中有以下代码:

public partial class ObjectFolder : ServiceBase
{
protected override void OnStart(string[] args)
{
ObjectFolderApp.Initialize();

ObjectFolderApp.StartMonitorAndWork();
}

protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop yourservice.
}
}

然后:

class ObjectFolderApp
{
public static bool Initialize()
{
//all init stuff
return true;
}


public static void StartMonitorAndWork()
{
Thread worker = new Thread(MonitorAndWork);
worker.Start();
}


private static void MonitorAndWork()
{
int loopTime = 60000;
if (int.TryParse(_cfgValues.GetConfigValue("OfWaitLoop"), out loopTime))
loopTime = 1000 * loopTime;

while (true)
{
/* create+open connection and fill DataSet */
DataSet ofDataSet = new DataSet("ObjectFolderSet");
using (_cnctn = _dbFactory.CreateConnection())
{
_cnctn.Open();

//do all kinds of database stuff
}
Thread.Sleep(loopTime);
}
}
}

最佳答案

重新散列我来自 this question 的答案, 推荐的方法是使用定时器和下面的代码:

public class MyService : ServiceBase
{
private Timer workTimer; // System.Threading.Timer

protected override void OnStart(string[] args)
{
workTimer = new Timer(new TimerCallback(DoWork), null, 5000, 5000);
base.OnStart(args);
}

protected override void OnStop()
{
workTimer.Dispose();
base.OnStop();
}

private void DoWork(object state)
{
RunScheduledTasks(); // Do some work
}
}

简单!

请注意,使用的Timer 类型是System.Threading.Timer,与Justin 相同指定。

关于c# - 如何在C#/.NET2.0中实现等待一段时间的windows服务循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593583/

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