关于定时器的问题

问题描述

需要做个在服务器上一直操作数据库的程序代码如下:System.Threading.TimerPreTimer;voidpreTimer_Tick(objectsource){//操作数据库}publicvoidsss(){PreTimer=newSystem.Threading.Timer(newTimerCallback(preTimer_Tick),this,0,10000);}然后执行sss()成功了但是运行一段时间就停止运行了..不知道什么问题请高手指教...

解决方案

解决方案二:
是不是出错了,比如一次没执行完,下一个操作又来了,造成冲突了
解决方案三:
出错了,objectsource被锁了?
解决方案四:
难道你写在WCF的Service里面了?会超时的帅哥。
解决方案五:
3楼的哥们说到点子上了..请指教...
解决方案六:
3楼的哥们说到点子上了..要怎么写才可以不超时啊..这些不帐号要72小时才可以和你留言...
解决方案七:
写成windows服务算了,帅哥publicstaticvoidWriteLog(stringlog){stringfilename=GetAppPath()+"Log"+DateTime.Today.ToString("yyyyMMdd")+".log";WriteLog(log,filename);}///<summary>///写日志文件///</summary>///<paramname="log">日志字符串</param>///<paramname="filename">日志文件名(包含完整路径)</param>publicstaticvoidWriteLog(stringlog,stringfilename){try{StreamWritersw=File.AppendText(filename);sw.WriteLine(log);sw.Flush();sw.Close();}catch{}}#endregion#region操作系统常用信息获取///<summary>///获取当前路径///</summary>///<returns></returns>publicstaticstringGetAppPath(){stringpath=AppDomain.CurrentDomain.BaseDirectory+@"";returnpath.Replace(@"\",@"");}#endregionprotectedoverridevoidOnStart(string[]args){tmr=newSystem.Timers.Timer();tmr.Interval=Convert.ToDouble(System.Configuration.ConfigurationSettings.AppSettings["timespan"]);//设置计时器事件间隔执行时间tmr.Elapsed+=newSystem.Timers.ElapsedEventHandler(tmr_Elapsed);tmr.Enabled=true;}protectedoverridevoidOnStop(){this.tmr.Enabled=false;}privatevoidtmr_Elapsed(objectsender,System.Timers.ElapsedEventArgse){WriteLog("test");}//privatevoidtmr_Elapsed}//endpublicpartialclassAnalysisService:ServiceBase}
解决方案八:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.ServiceProcess;usingSystem.Text;usingSystem.Timers;usingSystem.IO;usingSystem.Data.OracleClient;usingSystem.Configuration;usingSystem.Data.SqlClient;namespaceLogAnalysisService{publicpartialclassAnalysisService:ServiceBase{publicAnalysisService(){InitializeComponent();}System.Timers.Timertmr;#region获取数据集///<summary>///获取dataset///</summary>///<paramname="sql">sql</param>//////<returns>数据集</returns>publicstaticDataSetgetDataSetBySQL(stringsql){StringstrConn=System.Configuration.ConfigurationSettings.AppSettings["ConnStrOrcl"];DataSetds=newDataSet();stringstrSelect=sql;try{OracleConnectionConn=newOracleConnection(strConn);OracleDataAdapterAdapter=newOracleDataAdapter(strSelect,Conn);Adapter.Fill(ds);returnds;}catch{returnnull;}}#endregion#region执行导出数据///<summary>///导出数据///</summary>///<paramname="userid">用户id</param>privatevoidExportData(stringuserId){try{stringrestlogtime=System.Configuration.ConfigurationSettings.AppSettings["restlogtime"];inttaskhour=Int32.Parse(restlogtime);if(DateTime.Now.Hour==taskhour){stringdtstrtmp=DateTime.Now.Date.ToString();stringlogdtstr=DateTime.Parse(dtstrtmp).AddDays(-1).ToString();stringsqlexportdata=@"select*fromtb_tmplogwhere1=1"+@"anddecode(isanalysis,null,0,1)=1andLogTime>=to_date('"+logdtstr+"','yyyy-mm-ddhh24:mi:ss')andAuthor='"+userId+"'";DataSetds=newDataSet();ds=getDataSetBySQL(sqlexportdata);if(ds.Tables[0].Rows.Count>0){ExportTxt(ds);}}}catch(Exceptionerrrr){WriteLog(errrr.ToString());}}#endregion#region导出txt格式数据///<summary>///导出txt格式数据///</summary>///<paramname="ds">待导出数据集</param>privatevoidExportTxt(DataSetds){try{intcount=ds.Tables[0].Rows.Count;//得到数据的行数string[]rowsstr=newstring[count];for(intj=0;j<count;j++){DataRowdr=ds.Tables[0].Rows[j];for(inti=0;i<dr.ItemArray.Length;i++){rowsstr[j]+=dr.ItemArray[i].ToString();rowsstr[j]+="t"+"t";}rowsstr[j]+="n";}stringfilename=GetAppPath()+"txt"+DateTime.Today.ToString("yyyyMMdd")+".txt";FileStreamfs=newFileStream(filename,FileMode.OpenOrCreate,FileAccess.Write);StreamWritersw=newStreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));//通过指定字符编码方式可以实现对汉字的支持,否则在用记事本打开查看会出现乱码sw.Flush();sw.BaseStream.Seek(0,SeekOrigin.Begin);for(inti=0;i<count;i++){sw.WriteLine(rowsstr[i]);}sw.Flush();sw.Close();}catch(Exceptionerrr){WriteLog(errr.ToString());}}#endregion#region带事务操作数据库///<summary>///带事务的批量操作数据。///</summary>///<paramname="sqlInsert">SQL</param>///<returns>操作是否成功</returns>publicstaticboolOperateDatasWithTransaction(List<string>sqlList){OracleConnectionmyConnection=newOracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStrOrcl"]);myConnection.Open();OracleCommandmyCommand=myConnection.CreateCommand();OracleTransactionmyTrans;//StartalocaltransactionmyTrans=myConnection.BeginTransaction(IsolationLevel.ReadCommitted);//AssigntransactionobjectforapendinglocaltransactionmyCommand.Connection=myConnection;myCommand.Transaction=myTrans;try{foreach(stringiteminsqlList){myCommand.CommandText=item;myCommand.ExecuteNonQuery();}myTrans.Commit();returntrue;}catch(Exception){myTrans.Rollback();returnfalse;}finally{myConnection.Close();}}#endregion#region修改config文件///<summary>///修改配置文件///</summary>///<paramname="key">节点名称</param>///<paramname="value">节点数据</param>publicstaticvoidSetConfigValue(stringkey,stringvalue){boolisModified=false;foreach(stringkeyExistinConfigurationManager.AppSettings){if(keyExist==key){isModified=true;}}//OpenApp.ConfigofexecutableConfigurationconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//Youneedtoremovetheoldsettingsobjectbeforeyoucanreplaceitif(isModified){config.AppSettings.Settings.Remove(key);}//AddanApplicationSetting.config.AppSettings.Settings.Add(key,value);//SavethechangesinApp.configfile.config.Save(ConfigurationSaveMode.Modified);//Forceareloadofachangedsection.ConfigurationManager.RefreshSection("appSettings");}#endregion#region日志相关///<summary>///写日志文件///</summary>///<paramname="log"></param>publicstaticvoidWriteLog(stringlog){stringfilename=GetAppPath()+"Log"+DateTime.Today.ToString("yyyyMMdd")+".log";WriteLog(log,filename);}///<summary>///写日志文件///</summary>///<paramname="log">日志字符串</param>///<paramname="filename">日志文件名(包含完整路径)</param>publicstaticvoidWriteLog(stringlog,stringfilename){try{StreamWritersw=File.AppendText(filename);sw.WriteLine(log);sw.Flush();sw.Close();}catch{}}#endregion#region操作系统常用信息获取///<summary>///获取当前路径///</summary>///<returns></returns>publicstaticstringGetAppPath(){stringpath=AppDomain.CurrentDomain.BaseDirectory+@"";returnpath.Replace(@"\",@"");}#endregionprotectedoverridevoidOnStart(string[]args){tmr=newSystem.Timers.Timer();tmr.Interval=Convert.ToDouble(System.Configuration.ConfigurationSettings.AppSettings["timespan"]);//设置计时器事件间隔执行时间tmr.Elapsed+=newSystem.Timers.ElapsedEventHandler(tmr_Elapsed);tmr.Enabled=true;}protectedoverridevoidOnStop(){this.tmr.Enabled=false;}privatevoidtmr_Elapsed(objectsender,System.Timers.ElapsedEventArgse){WriteLog("test");}//privatevoidtmr_Elapsed}//endpublicpartialclassAnalysisService:ServiceBase}

解决方案九:
为啥不用数据库代理作业呢?简单方便,执行所占的资源应该也比你这个少...

时间: 2024-07-31 16:35:09

关于定时器的问题的相关文章

link环境下制作一款《订餐软件》,定时配送的功能怎么实现?使用定时器还是什么?

问题描述 link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现?

问题描述 link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问定时发货的实现,如何多个定时器编程?

问题描述 link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问如何对定时发货做定时器归零?

问题描述 link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? 解决方案 在你的数据库中记录下发货时间,使用触发器,到了时间就对数据清零处理.

浅谈linux定时器模型

用户态的定时器设计 记得某段时间的工作中,经常会用到定时器.发现有些同学为了图方便,会这样实现定时器: while(1) { sleep_awhile(); while((timer = get_expired_timer())) do_timer_handler(timer); } 用一个线程,周期性地睡眠一段时间,然后起来看看有没有需要触发的定时任务. 这种定时器写起来确实很简单,但是也让人感觉很拙.一方面,周期性的睡眠与唤醒,占用了一定的调度开销,并且定时线程被唤醒之后,经常是无事可做的.

NSTimer定时器的使用

前言:这是关于NSTimer的学习笔记.   正文内容大纲: 1.关于计时器NSTimer的一个被添加进NSRunLoop的使用细节 2.关于NSTimer常用方法的使用 3.关于NSTimer的类别工具类   正文: 1.关于计时器NSTimer的一个被添加进NSRunLoop的使用细节 下面展示一个示例: 在NSTimer scheduledTimerWithTimeInterval方法中,底层是会执行第11.12行代码的,只是和上面代码不一样的是,forMode的参数是NSDefaultR

timer-两个定时器嵌套调用问题

问题描述 两个定时器嵌套调用问题 if(message.trim().startsWith(ContactsEntry.CONTACT_RECEIVED_MESSGAE_PREFIX)){ //System.out.println("The contactTimer "+(null == contactTimer)+",The contactReloadTimer "+(null == contactReloadTimer)); messageCount++; if

时间子系统6_高分辨率定时器框架初始化

// 高分辨率定时器框架初始化 // 调用路径:start_kernel->hrtimers_init // 函数任务: // 1.创建cpu时钟基础 // 2.注册监听cpu状态变化 // 3.注册高分辨率模式下的定时器软中断 // 注: // 1.高分辨率定时器框架的通用部分总是编译进内核 // 2.高分辨率定时器框架初始为未激活状态,由低分辨率定时器软中断中切换到高分辨率 1.1 void __init hrtimers_init(void) { //通知clockevent设备管理,创建

传统定时器使用

2s后打印 接着4s后打印  再接着2s后打印  再接着4s后打印如此循环 import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TraditionalTimerTest {     static int count=0;     public static void main(String[] args) {                  class MyTimerTa

MySQL定时器Events

MySQL从5.1开始支持event功能,有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了.如linux  crontab功能 一.背景 我们MySQL的表A的数据量已经达到1.6亿,由于一些历史原因,需要把表A的数据转移到一个新表B,但是因为这是线上产品,所以宕机时间需要尽量的短,在不影响数据持续入库的情况下,我希望能通过作业(定时器Events)的形式慢慢搬迁这些数据.   二.使用过程 (一)  查看当前是否已开启事件计划(调度器)有3种方法: 1