• 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 (11NOT 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 (0FOR [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());
                    }
                }
            }


        }
    }

    下载源码包

  • 相关阅读:
    关于binary log一点总结[转]
    使用mysql索引技巧及注意事项
    优化php性能的一点总结
    html静态页面实现微信分享思路
    MySql字符串函数使用技巧
    Oracle计算时间差函数
    oracle10g获取Date类型字段无时分秒解决办法!
    Oracle常用函数
    COALESCE操作符
    关于null的操作
  • 原文地址:https://www.cnblogs.com/Task/p/1748201.html
Copyright © 2020-2023  润新知