名位大侠好:
本人要做一个服务,每天监视时间,如果时间到了上午十点以后就做一些操作SQL数据库的事情。
我在服务里面写了while(true)循环,加了这个WHILE循环后服务启动就报<错误1053:服务并未及时响应启动或控制请求>不加这个就可以启动。
我用程序做 是可行的。
本人要做一个服务,每天监视时间,如果时间到了上午十点以后就做一些操作SQL数据库的事情。
我在服务里面写了while(true)循环,加了这个WHILE循环后服务启动就报<错误1053:服务并未及时响应启动或控制请求>不加这个就可以启动。
我用程序做 是可行的。
解决方案 »
- C# 调用C++的DLL 后释放内存?
- 问个和Application.Run有关的问题
- 把中文转换来转换去
- c#中的堆栈的内存分配
- An unhandled exception of type 'System.BadImageFormatException' occurred in CsA
- 点击webBrowser里面的flash
- 求一正则表达式
- 启动子线程,子线程有时莫名停下了不往下执行,也没有error报出!
- 使用google.com项目讨论,大家学习讨论
- 通过Xml配置文件 在Execl中读取数据 并把想要的数据存在数据库中
- HtmlElement 如何取得网页元素的class属性的值?
- 100分问一个小问题:dataGridView添加了Checkbox列后如何捕捉点击动作?
{
// TODO: 在此处添加代码以启动服务。
int temp=1;
System.Threading.Timer tm=new Timer(new TimerCallback(KS),this,1800,1800);
}
我这样写可以吧
{
// TODO: 在此处添加代码以启动服务。
System.Threading.Timer tm=new System.Threading.Timer(new TimerCallback(KS),this,0,1800)}
用了这个用程序做隔几秒就出来了,可用到服务上去就不行到了规定的时间不运行
注意你把System.Threading.Timer tm声明为一个局部变量,这将导致tm在OnStart方法结束的时候被放入可回收列表(GC列表)。尽管tm仍在运行,但由于该对象已经不再被引用,它将会在任意时刻被CLR所回收(摧毁),相关的线程代码也将不再运行。要想Timer能够正常执行,你需要保持一个引用。建议你改成这样:private System.Threading.Timer tm = null;
protected override void OnStart(string[] args)
{ tm = new System.Threading.Timer(new TimerCallback(KS),this,0,1800);}
另外,在服务停止的时候,一定也要写相应的代码去停止timer,可以调用tm.Dispose();方法来做到这一点。最后,System.Threading.Timer这个类是个轻量级的类,如果想要开发服务程序,要更多的定时功能和事件支持,我建议你用System.Timers.Timer。
为什么不直接在数据库里定制一个任务、定时执行呢?