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

C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace QuartZ
{
    class Program
    {
        static void Main(string[] args)
        {

            //加载程序集(dll文件地址),使用Assembly类   
            Assembly assembly = Assembly.LoadFile(@"D:\ConsoleSample\QuartZ\ClassLib\bin\Debug\ClassLib.dll");

            //获取类型,参数(名称空间+类)   
            Type type = assembly.GetType("ClassLib.Sample");

            //创建该对象的实例,object类型,参数(名称空间+类)   
            object instance = assembly.CreateInstance("ClassLib.Sample");

            //设置Show_Str方法中的参数类型,Type[]类型;如有多个参数可以追加多个   
            Type[] params_type = new Type[1];
            params_type[0] = Type.GetType("System.String");
            //设置Show_Str方法中的参数值;如有多个参数可以追加多个   
            Object[] params_obj = new Object[1];
            params_obj[0] = "你好";

            //执行Show_Str方法   
            object value = type.GetMethod("Show_Str", params_type).Invoke(instance, params_obj);
            Console.WriteLine(value);
            
            //Nuget下载QuartZ
            Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //首先创建一个作业调度池
            ISchedulerFactory schedf = new StdSchedulerFactory();
            IScheduler sched = schedf.GetScheduler();
            //创建出来一个具体的作业
            IJobDetail job = JobBuilder.Create<JobDemo>().Build();
            //NextGivenSecondDate:如果第一个参数为null 第二个参数则表明当前时间往后推迟2秒的时间点。
            DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2);
            DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddHours(2), 3);
            //创建并配置一个触发器 
            //每三秒执行一次,一共执行100次,开始执行时间设定在当前时间,
            //结束时间我设定在2小时后;超过两小时不管有没有执行100次,都不执行了。             
            
            ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime)
                                        .WithSimpleSchedule(x => x.WithIntervalInSeconds(3).WithRepeatCount(100))
                                        .Build();
            //加入作业调度池中
            sched.ScheduleJob(job, trigger);
            //开始运行
            sched.Start();
            Console.ReadKey();
        }
    }

    public class JobDemo : IJob
    {
        /// <summary>
        /// 这里是作业调度每次定时执行方法
        /// </summary>
        /// <param name="context"></param>
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLib
{
    class Sample
    {
        public string Show_Str(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return "无数据";
            }
            else
            {
                return "你传入的参数是:" + str;
            }
        }  
    }
}

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
你会在C#的类库中添加webservice引用吗?转发布时间:2022-07-10
下一篇:
C#web项目添加*.ashx文件后报错处理发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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