• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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());
                }
            }
        }


    }
}

 

 

 

下载源码包


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MongoDB官方C#驱动中查询条件Query用法发布时间:2022-07-13
下一篇:
C#CSV文件读写发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap