c# windows服务定时程序
publicpartialclassService1:ServiceBase{publicService1(){InitializeComponent();}protec...
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
double sleeptime = 1000 * 60 ;//时间间隔为一小时
System.Timers.Timer t = new System.Timers.Timer(sleeptime);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(recorddataintodatabase);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
public void recorddataintodatabase(object source, System.Timers.ElapsedEventArgs e)
{
DBAccess db = new DBAccess();
string strsql = "insert into Getinforecord values(5,'2010-1-23 10:06:58','cdfefefe')";
db.ExecuteNonQuery(strsql);
}
我希望间隔一段时间就执行一次写数据库,当然这里的写数据库没有问题,我测试过了,可是一直就没有写进数据库,请问这个服务有什么问题,(我在服务管理器中能看到这个服务) 展开
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
double sleeptime = 1000 * 60 ;//时间间隔为一小时
System.Timers.Timer t = new System.Timers.Timer(sleeptime);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(recorddataintodatabase);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
public void recorddataintodatabase(object source, System.Timers.ElapsedEventArgs e)
{
DBAccess db = new DBAccess();
string strsql = "insert into Getinforecord values(5,'2010-1-23 10:06:58','cdfefefe')";
db.ExecuteNonQuery(strsql);
}
我希望间隔一段时间就执行一次写数据库,当然这里的写数据库没有问题,我测试过了,可是一直就没有写进数据库,请问这个服务有什么问题,(我在服务管理器中能看到这个服务) 展开
4个回答
展开全部
建议不写服务,编写好成“控制台”程序,然后用windows自带的“计划任务”执行程序。
开始--所有程序--附件--系统工具--计划任务
如果一定要写服务,这我以前写的定时服务:
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
this.timerToPDF.Enabled = true;
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timerToPDF.Enabled = false;
}
protected override void OnContinue()
{
// TODO: 服务继续
this.timerToPDF.Enabled = true;
}
protected override void OnPause()
{
// TOD: 服务暂停
this.timerToPDF.Enabled = false;
}
private void timerToPDF_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Hour > 8)
{
this.timerToPDF.Enabled = false;
//编写自己的代码
this.timerToPDF.Enabled = true;
}
}
开始--所有程序--附件--系统工具--计划任务
如果一定要写服务,这我以前写的定时服务:
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
this.timerToPDF.Enabled = true;
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timerToPDF.Enabled = false;
}
protected override void OnContinue()
{
// TODO: 服务继续
this.timerToPDF.Enabled = true;
}
protected override void OnPause()
{
// TOD: 服务暂停
this.timerToPDF.Enabled = false;
}
private void timerToPDF_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Hour > 8)
{
this.timerToPDF.Enabled = false;
//编写自己的代码
this.timerToPDF.Enabled = true;
}
}
展开全部
其一:权限。。
如果是写入远程计算机的数据需要以netservice启动服务,默认的system无权限。
其二:1000 * 60 为1分,非一小时
其三:建议写成while(true)内执行线程
执行一次Thead.sleep(59分钟)
如果是写入远程计算机的数据需要以netservice启动服务,默认的system无权限。
其二:1000 * 60 为1分,非一小时
其三:建议写成while(true)内执行线程
执行一次Thead.sleep(59分钟)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是数据库没有写进去呢?你看看这个地方吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询