C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度
- 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[];
- params_type[] = Type.GetType("System.String");
- //设置Show_Str方法中的参数值;如有多个参数可以追加多个
- Object[] params_obj = new Object[];
- params_obj[] = "你好";
- //执行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(), );
- DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddHours(), );
- //创建并配置一个触发器
- //每三秒执行一次,一共执行100次,开始执行时间设定在当前时间,
- //结束时间我设定在2小时后;超过两小时不管有没有执行100次,都不执行了。
- ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime)
- .WithSimpleSchedule(x => x.WithIntervalInSeconds().WithRepeatCount())
- .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;
- }
- }
- }
- }
C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度的更多相关文章
- C#反射动态调用dll中的方法,并返回结果(转)
反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果:当然也可以给该方法传递参数 namespace assembly_name { public class assem ...
- C#反射动态调用dll中的方法
//加载程序集(dll文件地址),使用Assembly类 Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirec ...
- 纯静态界面中(html)中通过js调用dll中的方法从数据库中读取数据
最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概 ...
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息
反射的基本概念: .Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息 创建Assembly和Entity两个程序集,在Assembl ...
- 利用C#的反射机制动态调用DLL类库
最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢 ...
- 学习反射例子,调用DLL窗体及方法
创建类库,并添加新窗体,加入以下方法 public static string setText(string str) { return str; } 编译后把生成的DLL文件放入新项目的bin目录, ...
- C#程序实现动态调用DLL的研究(转)
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- C#程序实现动态调用DLL的研究[转]
摘 要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...
- C#程序实现动态调用DLL的研究
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
随机推荐
- javascript中检测一个变量的类型
/** * 怎么检测一个变量的类型? * 在js中检测对象类型主要有三种:typeof, instanceof, constructor, 这几种都可以检测对象的类型. * 另外还可以适应jQuery ...
- html的body内标签之超链接
一,先来个简单的练练手,target="_blank" 的作用是在新的tab中打开页面.href 是超链接的意思. <!DOCTYPE html> <html l ...
- 配置ssh
1. 实现只允许特定用户ssh登录 1.1. 直接配置ssh来实现 编辑/etc/ssh/sshd_config,在末尾添加如下一行 AllowUsers user1 user2 user3 然后 ...
- 【刷题】BZOJ 4827 [Hnoi2017]礼物
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- LOJ6276:果树——题解
https://loj.ac/problem/6276#submit_code NiroBC 姐姐是个活泼的少女,她十分喜欢爬树,而她家门口正好有一棵果树,正好满足了她爬树的需求.这颗果树有N 个节点 ...
- lighttpd - 配置文件
转载其他网站,收藏查看! 配置文件lighttpd.conf参数详细说明的链接和选译 发表于 2010年12月22日 http://redmine.lighttpd.net/projects/ligh ...
- jQuery考试
No1: 分析:首先A答案是正确的jQuery中删除元素的方法有a,c,d所以排除B,另外c是清空,d虽然能删除但是不能删除元素所绑定的事件等等. No2: 分析:A是正确的通过get(index)的 ...
- bzoj2064: 分裂(集合DP)
......咸鱼了将近一个月,因为沉迷ingress作业越来越多一直没时间搞OI呜呜呜 题目大意:有一个初始集合(n个元素)和一个目标集合(m个元素)(1<=n,m<=10),两个操作 ...
- JS判断当前DOM树是否加载完毕
/** * @function Monitor whether the document tree is loaded. * @param fn */function domReady(fn) { i ...
- All you need to know about sorting in Postgres
按:之前看pg的执行计划,多次看到不同的排序方式,但不知何意.偶遇此篇讲解pg执行计划三种排序方式,备忘一下. Sorting Sorting is one of the most fundament ...