c# 仿照计划任务(定时提示、定时运行程序、定时打开url(前台/后台))/每天/每周/每月/一次 多时间段...

if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[T_task] ' and   OBJECTPROPERTY (id, N ' IsUserTable ' =   1 )
drop   table   [ dbo ] . [ T_task ]
GO

CREATE   TABLE   [ dbo ] . [ T_task ]  (
    
[ id ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ userid ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ title ]   [ nvarchar ]  ( 100 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ type ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxtype ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxtime ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxday ]   [ int ]   NULL  ,
    
[ zxweek ]   [ int ]   NULL  ,
    
[ zxweekg ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ ismonth ]   [ int ]   NULL  ,
    
[ zxmonth ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxmonthday ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxmonthweek ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ zxmonthweekday ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ kday ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ ktime ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ dtime ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ isdtime ]   [ int ]   NULL  ,
    
[ kcf ]   [ int ]   NULL  ,
    
[ kcftime ]   [ int ]   NULL  ,
    
[ ktype ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ msg ]   [ text ]  COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ propath ]   [ nvarchar ]  ( 200 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ url ]   [ nvarchar ]  ( 200 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ ishturl ]   [ int ]   NULL  ,
    
[ remark ]   [ text ]  COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ dq ]   [ int ]   NULL  
ON   [ PRIMARY ]  TEXTIMAGE_ON  [ PRIMARY ]
GO

ALTER   TABLE   [ dbo ] . [ T_task ]   ADD  
    
CONSTRAINT   [ DF_T_task_dq ]   DEFAULT  ( 0 FOR   [ dq ] ,
    
CONSTRAINT   [ PK_T_task ]   PRIMARY   KEY    CLUSTERED  
    (
        
[ id ]
    )  
ON   [ PRIMARY ]  
GO

 

type   1:只弹出提示。2:运行指定程序 3:打开url
zxype   1:每天   2:每周  3:每月  4:一次性
zxtime   开始时间 (时,分)
zxday 每多少天执行 zxtype=1 1
zxweek  每多少周执行 zxtype=2  1
zxweekg 具体执行那周内的那天执行  星期1,2,3,4,5,6,7

zxmonth 月份 1,2,3,4,5,6,7,8,9,10,11,12 
zxmonthday 这个月多少号执行 0,1,2,3,4,5,6,7,8,9,10...30/31     

zxmonthweekday   选择每个星期几执行。1/2/3/4/5/6/7
kday   zxtype=4 执行日期
ktime  开始日期
dtime 结束日期
isdtime 是否启动结束日期

msg  要提示的信息
propath  要执行的应用程序ujing
url   要打开的url
ishturl  是否后台打开
remark 
dq  是否已过期

 

 

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.Data;
using  System.Data.SqlClient;


namespace  tosky.Tool
{
    
public   class  task
    {
        
public  task(){

        }
        
public   static  DataTable dt;
        
public   static   bool  isdt = false ;

        
public   static   void  evaltask( string  id)
        {
            SqlDataReader dr 
=  Class.Dbconn.dataReader( " select * from T_task where id= "   +  id);
            
if  (dr.Read()){
                eval(dr[
" type " ].ToString(), Class.Tool.ConverHtml(dr[ " msg " ].ToString(),  2 ), Class.Tool.ConverHtml(dr[ " propath " ].ToString(),  2 ), Class.Tool.ConverHtml(dr[ " url " ].ToString(),  2 ), (dr[ " ishturl " ].ToString()  ==   " 1 " ?   " 1 "  :  " 0 " );
            }
            
else  { Class.Tool.alert( " 不存在此ID: " + id + "  的任务 " , 1 ); }
            dr.Close();
        }

        
public   static   void  eval( string  type, string  msg, string  propath, string  url, string  ishturl)
        {
                Vote v 
=   new  Vote();
                
switch  (type)
                {
                    
case   " 即时提示 " :
                        v.StayTime 
=   60000 ;
                        v.title 
=   " 任务提醒 (60秒后关闭) " ;
                        v.taskvote(msg);
                        v.ScrollShow();
                        
break ;
                    
case   " 运行程序 " :
                        
try {
                            System.Diagnostics.Process.Start(url);v.Dispose();
                        }
catch  (Exception ex){
                            v.StayTime
= 5000 ;
                            v.title 
=   " 运行程序 (5秒后关闭) " ;
                            v.showvote(
" 打开程序失败,错误: " + ex.Message);
                            v.ScrollShow();
                        }
                        
break ;
                    
case   " 打开URL " :
                        
if  (ishturl  ==   " 1 " ) {
                            v.StayTime 
=   5000 ;
                            v.HeightMax 
=   80 ;
                            v.title 
=   " 后台打开URL (5秒后关闭) " ;
                            
if  (Class.Tool.DownHtml(url)  !=   null ){
                                msg 
=   " 后台打开URL  "   +  url  +   "  完成! " ;
                            }
else {
                                msg 
=   " 后台打开URL: "   +  url  +   "  失败! " ;
                            }
                            v.showvote(msg);
                            v.ScrollShow();
                        }
else {
                            Class.Tool.openie(url); v.Dispose();
                        }
                        
break ;
                }
        }

        
public   static   void  taskeval( string  id){
            
int  dq  =   0 ;
            SqlDataReader dr 
=  Class.Dbconn.dataReader( " select * from T_task where dq=0 and id= "   +  id);
            
if  (dr.Read()){
                
string  type  =  dr[ " type " ].ToString(),
                    msg 
=  Class.Tool.ConverHtml(dr[ " msg " ].ToString(),  2 ),
                    propath 
=  Class.Tool.ConverHtml(dr[ " propath " ].ToString(),  2 ),
                    url 
=  Class.Tool.ConverHtml(dr[ " url " ].ToString(),  2 ),
                    ishthtml 
=  (dr[ " ishturl " ].ToString()  ==   " 1 " ?   " 1 "  :  " 0 " ,
                    zxtime 
=  dr[ " zxtime " ].ToString(),
                    zxtype 
=  dr[ " zxtype " ].ToString(),
                    isdtime
= dr[ " isdtime " ].ToString(),
                    ktime 
=  dr[ " ktime " ].ToString(), 
                    dtime 
=  dr[ " dtime " ].ToString()  +   "   "   +  zxtime,
                    zxweekg 
=  dr[ " zxweekg " ].ToString(),
                    ismonth 
=  dr[ " ismonth " ].ToString(),
                    zxmonth
= dr[ " zxmonth " ].ToString(),
                    zxmonthday
= dr[ " zxmonthday " ].ToString();

                
int  zxday  =   int .Parse(dr[ " zxday " ].ToString()), zxweek  =   int .Parse(dr[ " zxweek " ].ToString());
                    DateTime dtktime 
=  DateTime.Parse(ktime), dtdtime  =  DateTime.Parse(dtime);
                    TimeSpan ts 
=  DateTime.Now.Subtract(dtktime);
                    
if  (isdtime  ==   " 1 "   &&  (dtdtime  <  DateTime.Now)){
                        dq 
=   1 ;
                    }
else {
                        
bool  sf  =   false ;
                        
switch  (zxtype)
                        {
                            
case   " 每天 " :
                                
if  (ts.Days  %  zxday  ==   0 ){
                                    sf 
=   true ;
                                }
                                
break ;
                            
case   " 每周 " :
                                
int  j = int .Parse(Class.Tool.week(DateTime.Now,  1 ));
                                TimeSpan ts2 
=  DateTime.Now.AddDays( 1 - j)  -  dtktime;
                                
int  zxw  =  ts2.Days / 7 ;
                                
if  (ts2.Days - zxw * 7 > 0 ){zxw += 1 ;}
                                
if  (zxw  %  zxweek  == 0 ){
                                    
string [] w  =  zxweekg.Split( ' , ' );
                                    
if  (w[j  -   1 ==   " 1 " ) { sf  =   true ; }
                                }
                                
break ;
                            
case   " 每月 " :
                                
string [] m = zxmonth.Split( ' , ' );
                                
if  (m[DateTime.Now.Month  -   1 ==   " 1 " )
                                {
                                    
if  (ismonth  ==   " 2 " ){
                                        
if  (Class.Tool.week(DateTime.Now,  2 ==  Class.Tool.week(DateTime.Now,  2 ))
                                        {sf 
=   true ;}
                                    }
else {
                                        
if (DateTime.Now.Day  ==   int .Parse(zxmonthday)) { sf  =   true ; }
                                    }
                                }
                                
break ;
                            
case   " 一次 " :
                                sf 
=   true ; dq  =   1 ;
                                
break ;
                        }
                        
if (sf){eval(type, msg, propath, url, ishthtml);}
                    }
                
            }
            dr.Close();

            
if  (dq  ==   1 ) { Class.Dbconn.ExecuteSql( " update T_task set dq=1 where id= " + id); }
        }

        
public   static   void  foreval( string  dts, string  user)
        {
            
if  ( ! isdt){
                dt 
=  Class.Dbconn.dataTable( " select id,zxtime from T_task where dq=0 and userid=' "   +  user  +   " ' " );
                isdt 
=   true ;
            }
            
for  ( int  i  =   0 ; i < dt.Rows.Count; i ++ ){
                
if  (dts == dt.Rows[i][ 1 ].ToString()){
                    Tool.task.taskeval(dt.Rows[i][
0 ].ToString());
                }
            }
        }


    }
}

 

 

 

下载源码包

转载于:https://www.cnblogs.com/Task/archive/2010/05/31/1748201.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值