[솔 루 션] Microsoft Windows 서비스 (3) Quartz. net 정시 작업 사용
9433 단어 Microsoft
홈 페이지 강좌:http://www.quartz-scheduler.net/documentation/index.html
장점:
1. 전, 시작 시간, 간격, 횟수, 종료 시간 을 지정 할 수 있 습 니 다.
2. 편리 하 다.각종 스 레 드 문 제 를 고려 할 필요 가 없다.
다운로드:
Install-Package Quartz
개발:
1.job 2.trigger 3.scheduler
job: 수행 할 일 을 정의 하 는 작업 항목
IJob 인 터 페 이 스 를 실현 합 니 다. 단 한 가지 방법 이 있 습 니 다.
class SampleJob : IJob
{
public void Execute(IJobExecutionContext context)
{
File.AppendAllText("d:\\1.txt", "good");
}
}
trigger: 트리거, 언제 몇 번 을 실행 할 지 정의 합 니 다.
구조 함수: public SimpleTriggerImpl (string name, string group, DateOffset startTimeUtc, DateOffset? endTimeUtc, int repeatCount, TimeSpan repeatInterval);
위의 ctor 를 통 해 new 호출 트리거 를 사용 할 수 있 습 니 다.
scheduler: 스케줄 러, 트리거 와 작업 결합
var factory = new StdSchedulerFactory();
var sched = factory.GetScheduler();
실행:
a. IJob 을 IJobDetail 로 포장 하고 Public JobDetailImpl (string name, Type jobType) 을 통 해
b. IScheduler 인 터 페 이 스 를 호출 하 는 스케줄 링 방법: DateTimeOffset ScheduleJob (IJobDetail jobDetail, ITrigger trigger);
c. IScheduler 인터페이스 시작 방법: void Start();또는 void StartDelayed (TimeSpan delay);
정지:
IScheduler 인터페이스 시작 방법 호출: void Shutdown();
코드 다운로드: 다운로드 클릭
Quartz 와 TopShelf 를 간단하게 결합 하여 서 비 스 를 만 듭 니 다.
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 HostFactory.Run(x =>
6 {
7 //
8 x.Service<RuntimeService>(c =>
9 {
10 c.ConstructUsing(name => new RuntimeService());
11 c.WhenStarted(s => s.Begin());
12 c.WhenStopped(s => s.Stop());
13 });
14 //
15 x.RunAsLocalSystem();
16
17 x.SetDescription(" ");
18 x.SetDisplayName(" ");
19 x.SetServiceName(" ");
20 });
21 }
22 }
23
24 class RealJob : IJob
25 {
26 public void Execute(IJobExecutionContext context)
27 {
28 Console.WriteLine(DateTime.Now.ToLongTimeString());
29 }
30 }
31
32 class RuntimeService
33 {
34 private IScheduler sched;
35 public RuntimeService()
36 {
37 var factory = new StdSchedulerFactory();
38 sched = factory.GetScheduler();
39 }
40 public void Begin()
41 {
42 sched.ScheduleJob(new JobDetailImpl("job", typeof(RealJob)),
43 new SimpleTriggerImpl("trig", "group", -1, new TimeSpan(0, 0, 1)));
44 sched.Start();
45 }
46
47 public void Stop()
48 {
49 sched.Shutdown();
50 }
51 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Microsoft에 인증되지 않은 취약점? 이야기Microsoft는 제품이나 서비스의 취약성을 발견하면 보상금을 받을 수 있는 제도 「Microsoft Bug Bounty Program」이 있다. 본 기사에서는 Microsoft에 인정되지 않았지만, 유저에게의 리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.