"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6494],{6210:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>h,contentTitle:()=>a,default:()=>x,frontMatter:()=>t,metadata:()=>u,toc:()=>g});var s=n(5893),i=n(1151),o=n(510),c=n(4996),d=n(4866),l=n(5162);const t={id:"job",title:"26.1 \u8c03\u5ea6\u4f5c\u4e1a",sidebar_label:"26.1 \u8c03\u5ea6\u4f5c\u4e1a"},a=void 0,u={id:"job",title:"26.1 \u8c03\u5ea6\u4f5c\u4e1a",description:"\ud83d\udcdd \u6a21\u5757\u66f4\u65b0\u65e5\u5fd7",source:"@site/docs/job.mdx",sourceDirName:".",slug:"/job",permalink:"/docs/job",draft:!1,unlisted:!1,editUrl:"https://gitee.com/dotnetchina/Furion/tree/v4/handbook/docs/job.mdx",tags:[],version:"current",lastUpdatedBy:"\u767e\u5c0f\u50e7",lastUpdatedAt:1700800983,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{id:"job",title:"26.1 \u8c03\u5ea6\u4f5c\u4e1a",sidebar_label:"26.1 \u8c03\u5ea6\u4f5c\u4e1a"},sidebar:"docs",previous:{title:"26. \u5b9a\u65f6\u4efb\u52a1 (Schedule)",permalink:"/docs/category/job"},next:{title:"26.2 Cron \u8868\u8fbe\u5f0f",permalink:"/docs/cron"}},h={},g=[{value:"26.1.1 \u5173\u4e8e\u8c03\u5ea6\u4f5c\u4e1a",id:"2611-\u5173\u4e8e\u8c03\u5ea6\u4f5c\u4e1a",level:2},{value:"26.1.1.1 \u4f7f\u7528\u573a\u666f",id:"26111-\u4f7f\u7528\u573a\u666f",level:3},{value:"26.1.2 \u5feb\u901f\u5165\u95e8",id:"2612-\u5feb\u901f\u5165\u95e8",level:2},{value:"26.1.2.1 \u6307\u5b9a\u4f5c\u4e1a Id
",id:"26121-\u6307\u5b9a\u4f5c\u4e1a-id",level:3},{value:"26.1.2.2 \u591a\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"26122-\u591a\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.2.3 \u4e32\u884c
\u6267\u884c",id:"26123-\u4e32\u884c-\u6267\u884c",level:3},{value:"26.1.2.4 \u6253\u5370\u4f5c\u4e1a\u5b8c\u6574\u4fe1\u606f",id:"26124-\u6253\u5370\u4f5c\u4e1a\u5b8c\u6574\u4fe1\u606f",level:3},{value:"26.1.2.5 \u8fd0\u884c\u65f6\uff08\u52a8\u6001\uff09\u64cd\u4f5c\u4f5c\u4e1a",id:"26125-\u8fd0\u884c\u65f6\u52a8\u6001\u64cd\u4f5c\u4f5c\u4e1a",level:3},{value:"26.1.2.6 \u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027",id:"26126-\u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027",level:3},{value:"26.1.2.7 HTTP
\u8bf7\u6c42\u4f5c\u4e1a",id:"26127-http-\u8bf7\u6c42\u4f5c\u4e1a",level:3},{value:"26.1.2.8 \u59d4\u6258\u65b9\u5f0f\u4f5c\u4e1a",id:"26128-\u59d4\u6258\u65b9\u5f0f\u4f5c\u4e1a",level:3},{value:"26.1.2.9 \u975e IOC/DI
\u9879\u76ee\u4e2d\u4f7f\u7528",id:"26129-\u975e-iocdi-\u9879\u76ee\u4e2d\u4f7f\u7528",level:3},{value:"26.1.3 \u4f5c\u4e1a\u4fe1\u606f JobDetail
\u53ca\u6784\u5efa\u5668",id:"2613-\u4f5c\u4e1a\u4fe1\u606f-jobdetail-\u53ca\u6784\u5efa\u5668",level:2},{value:"26.1.3.1 \u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f",id:"26131-\u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f",level:3},{value:"26.1.3.2 \u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",id:"26132-\u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",level:3},{value:"26.1.3.3 \u8bbe\u7f6e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",id:"26133-\u8bbe\u7f6e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",level:3},{value:"26.1.3.4 \u4f5c\u4e1a\u4fe1\u606f/\u6784\u5efa\u5668\u989d\u5916\u6570\u636e",id:"26134-\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668\u989d\u5916\u6570\u636e",level:3},{value:"26.1.3.5 \u4f5c\u4e1a\u4fe1\u606f\u7279\u6027",id:"26135-\u4f5c\u4e1a\u4fe1\u606f\u7279\u6027",level:3},{value:"26.1.3.6 \u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",id:"26136-\u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",level:3},{value:"26.1.3.7 \u81ea\u5b9a\u4e49 SQL
\u8f93\u51fa\u914d\u7f6e",id:"26137-\u81ea\u5b9a\u4e49-sql-\u8f93\u51fa\u914d\u7f6e",level:3},{value:"26.1.3.8 \u542f\u7528\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u8f93\u51fa",id:"26138-\u542f\u7528\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u8f93\u51fa",level:3},{value:"26.1.4 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f IJob
",id:"2614-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f-ijob",level:2},{value:"26.1.4.1 \u5982\u4f55\u5b9a\u4e49",id:"26141-\u5982\u4f55\u5b9a\u4e49",level:3},{value:"26.1.4.2 JobExecutingContext
\u4e0a\u4e0b\u6587",id:"26142-jobexecutingcontext-\u4e0a\u4e0b\u6587",level:3},{value:"26.1.4.3 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5b9e\u4f8b",id:"26143-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5b9e\u4f8b",level:3},{value:"26.1.4.4 \u4f9d\u8d56\u6ce8\u5165",id:"26144-\u4f9d\u8d56\u6ce8\u5165",level:3},{value:"26.1.4.5 \u52a8\u6001\u4f5c\u4e1a DynamicJob
",id:"26145-\u52a8\u6001\u4f5c\u4e1a-dynamicjob",level:3},{value:"26.1.4.6 \u4f7f\u7528 Roslyn
\u52a8\u6001\u521b\u5efa",id:"26146-\u4f7f\u7528-roslyn-\u52a8\u6001\u521b\u5efa",level:3},{value:"26.1.4.7 \u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u5904\u7406",id:"26147-\u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u5904\u7406",level:3},{value:"26.1.4.8 \u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u56de\u9000\u7b56\u7565",id:"26148-\u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u56de\u9000\u7b56\u7565",level:3},{value:"26.1.4.9 \u4f5c\u4e1a\u8c03\u5ea6\u5668\u88ab\u53d6\u6d88\u5904\u7406",id:"26149-\u4f5c\u4e1a\u8c03\u5ea6\u5668\u88ab\u53d6\u6d88\u5904\u7406",level:3},{value:"26.1.4.10 HTTP
\u8bf7\u6c42\u4f5c\u4e1a",id:"261410-http-\u8bf7\u6c42\u4f5c\u4e1a",level:3},{value:"26.1.4.11 \u8bbe\u7f6e\u672c\u6b21\u6267\u884c\u7ed3\u679c",id:"261411-\u8bbe\u7f6e\u672c\u6b21\u6267\u884c\u7ed3\u679c",level:3},{value:"26.1.5 \u4f5c\u4e1a\u89e6\u53d1\u5668 Trigger
\u53ca\u6784\u5efa\u5668",id:"2615-\u4f5c\u4e1a\u89e6\u53d1\u5668-trigger-\u53ca\u6784\u5efa\u5668",level:2},{value:"26.1.5.1 \u5173\u4e8e\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"26151-\u5173\u4e8e\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.5.2 \u4f5c\u4e1a\u89e6\u53d1\u5668\u72b6\u6001",id:"26152-\u4f5c\u4e1a\u89e6\u53d1\u5668\u72b6\u6001",level:3},{value:"26.1.5.3 \u5173\u4e8e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",id:"26153-\u5173\u4e8e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",level:3},{value:"26.1.5.4 \u5185\u7f6e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",id:"26154-\u5185\u7f6e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",level:3},{value:"26.1.5.5 \u81ea\u5b9a\u4e49\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"26155-\u81ea\u5b9a\u4e49\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.5.6 \u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027\u53ca\u81ea\u5b9a\u4e49",id:"26156-\u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027\u53ca\u81ea\u5b9a\u4e49",level:3},{value:"26.1.5.7 \u8bbe\u7f6e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",id:"26157-\u8bbe\u7f6e\u4f5c\u4e1a\u89e6\u53d1\u5668\u6784\u5efa\u5668",level:3},{value:"26.1.5.8 \u4f5c\u4e1a\u89e6\u53d1\u5668\u6301\u4e45\u5316\u65b9\u6cd5",id:"26158-\u4f5c\u4e1a\u89e6\u53d1\u5668\u6301\u4e45\u5316\u65b9\u6cd5",level:3},{value:"26.1.5.9 \u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",id:"26159-\u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",level:3},{value:"26.1.5.10 \u81ea\u5b9a\u4e49 SQL
\u8f93\u51fa\u914d\u7f6e",id:"261510-\u81ea\u5b9a\u4e49-sql-\u8f93\u51fa\u914d\u7f6e",level:3},{value:"26.1.5.11 \u67e5\u770b\u6700\u8fd1\u8fd0\u884c\u8bb0\u5f55",id:"261511-\u67e5\u770b\u6700\u8fd1\u8fd0\u884c\u8bb0\u5f55",level:3},{value:"26.1.5.12 \u66f4\u6539\u4f5c\u4e1a\u89e6\u53d1\u5668\u89e6\u53d1\u65f6\u95f4",id:"261512-\u66f4\u6539\u4f5c\u4e1a\u89e6\u53d1\u5668\u89e6\u53d1\u65f6\u95f4",level:3},{value:"26.1.6 \u4f5c\u4e1a\u8ba1\u5212 Scheduler
\u53ca\u6784\u5efa\u5668",id:"2616-\u4f5c\u4e1a\u8ba1\u5212-scheduler-\u53ca\u6784\u5efa\u5668",level:2},{value:"26.1.6.1 \u5173\u4e8e\u4f5c\u4e1a\u8ba1\u5212",id:"26161-\u5173\u4e8e\u4f5c\u4e1a\u8ba1\u5212",level:3},{value:"26.1.6.2 \u5173\u4e8e\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668",id:"26162-\u5173\u4e8e\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668",level:3},{value:"26.1.6.3 \u8bbe\u7f6e\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668",id:"26163-\u8bbe\u7f6e\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668",level:3},{value:"26.1.6.4 \u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668\u6301\u4e45\u5316\u65b9\u6cd5",id:"26164-\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668\u6301\u4e45\u5316\u65b9\u6cd5",level:3},{value:"26.1.6.5 \u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",id:"26165-\u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",level:3},{value:"26.1.7 \u4f5c\u4e1a\u8c03\u5ea6\u5668 ScheduleOptionsBuilder
\u914d\u7f6e\u9009\u9879",id:"2617-\u4f5c\u4e1a\u8c03\u5ea6\u5668-scheduleoptionsbuilder-\u914d\u7f6e\u9009\u9879",level:2},{value:"26.1.7.1 \u5173\u4e8e ScheduleOptionsBuilder
",id:"26171-\u5173\u4e8e-scheduleoptionsbuilder",level:3},{value:"26.1.7.2 ScheduleOptionsBuilder
\u5185\u7f6e\u5c5e\u6027\u548c\u65b9\u6cd5",id:"26172-scheduleoptionsbuilder-\u5185\u7f6e\u5c5e\u6027\u548c\u65b9\u6cd5",level:3},{value:"26.1.8 \u4f5c\u4e1a\u76d1\u89c6\u5668 IJobMonitor
",id:"2618-\u4f5c\u4e1a\u76d1\u89c6\u5668-ijobmonitor",level:2},{value:"26.1.8.1 \u5173\u4e8e\u53c2\u6570 JobExecutionContext
",id:"26181-\u5173\u4e8e\u53c2\u6570-jobexecutioncontext",level:3},{value:"26.1.9 \u4f5c\u4e1a\u6267\u884c\u5668 IJobExecutor
",id:"2619-\u4f5c\u4e1a\u6267\u884c\u5668-ijobexecutor",level:2},{value:"26.1.9.1 \u5b9e\u73b0\u91cd\u8bd5\u7b56\u7565",id:"26191-\u5b9e\u73b0\u91cd\u8bd5\u7b56\u7565",level:3},{value:"26.1.9.2 \u5b9e\u73b0\u8d85\u65f6\u63a7\u5236",id:"26192-\u5b9e\u73b0\u8d85\u65f6\u63a7\u5236",level:3},{value:"26.1.9.3 \u66f4\u591a\u63a7\u5236",id:"26193-\u66f4\u591a\u63a7\u5236",level:3},{value:"26.1.10 \u4f5c\u4e1a\u8ba1\u5212\u5de5\u5382 ISchedulerFactory
",id:"26110-\u4f5c\u4e1a\u8ba1\u5212\u5de5\u5382-ischedulerfactory",level:2},{value:"26.1.10.1 \u67e5\u627e\u6240\u6709\u4f5c\u4e1a",id:"261101-\u67e5\u627e\u6240\u6709\u4f5c\u4e1a",level:3},{value:"26.1.10.2 \u67e5\u627e\u4e0b\u4e00\u6279\u89e6\u53d1\u7684\u4f5c\u4e1a",id:"261102-\u67e5\u627e\u4e0b\u4e00\u6279\u89e6\u53d1\u7684\u4f5c\u4e1a",level:3},{value:"26.1.10.3 \u83b7\u53d6\u5355\u4e2a\u4f5c\u4e1a",id:"261103-\u83b7\u53d6\u5355\u4e2a\u4f5c\u4e1a",level:3},{value:"26.1.10.4 \u4fdd\u5b58\u4f5c\u4e1a",id:"261104-\u4fdd\u5b58\u4f5c\u4e1a",level:3},{value:"26.1.10.5 \u6dfb\u52a0\u4f5c\u4e1a",id:"261105-\u6dfb\u52a0\u4f5c\u4e1a",level:3},{value:"26.1.10.6 \u66f4\u65b0\u4f5c\u4e1a",id:"261106-\u66f4\u65b0\u4f5c\u4e1a",level:3},{value:"26.1.10.7 \u5220\u9664\u4f5c\u4e1a",id:"261107-\u5220\u9664\u4f5c\u4e1a",level:3},{value:"26.1.10.8 \u68c0\u67e5\u4f5c\u4e1a\u662f\u5426\u5b58\u5728",id:"261108-\u68c0\u67e5\u4f5c\u4e1a\u662f\u5426\u5b58\u5728",level:3},{value:"26.1.10.9 \u542f\u52a8\u6240\u6709\u4f5c\u4e1a",id:"261109-\u542f\u52a8\u6240\u6709\u4f5c\u4e1a",level:3},{value:"26.1.10.10 \u6682\u505c\u6240\u6709\u4f5c\u4e1a",id:"2611010-\u6682\u505c\u6240\u6709\u4f5c\u4e1a",level:3},{value:"26.1.10.11 \u5220\u9664\u6240\u6709\u4f5c\u4e1a",id:"2611011-\u5220\u9664\u6240\u6709\u4f5c\u4e1a",level:3},{value:"26.1.10.12 \u5f3a\u5236\u89e6\u53d1\u6240\u6709\u4f5c\u4e1a\u6301\u4e45\u5316\u64cd\u4f5c",id:"2611012-\u5f3a\u5236\u89e6\u53d1\u6240\u6709\u4f5c\u4e1a\u6301\u4e45\u5316\u64cd\u4f5c",level:3},{value:"26.1.10.13 \u6821\u5bf9\u6240\u6709\u4f5c\u4e1a",id:"2611013-\u6821\u5bf9\u6240\u6709\u4f5c\u4e1a",level:3},{value:"26.1.10.14 \u5f3a\u5236\u5524\u9192\u4f5c\u4e1a\u8c03\u5ea6\u5668",id:"2611014-\u5f3a\u5236\u5524\u9192\u4f5c\u4e1a\u8c03\u5ea6\u5668",level:3},{value:"26.1.10.15 \u7acb\u5373\u6267\u884c\u4f5c\u4e1a",id:"2611015-\u7acb\u5373\u6267\u884c\u4f5c\u4e1a",level:3},{value:"26.1.11 \u4f5c\u4e1a\u8ba1\u5212 IScheduler
",id:"26111-\u4f5c\u4e1a\u8ba1\u5212-ischeduler",level:2},{value:"26.1.11.1 \u83b7\u53d6 SchedulerModel
\u5b9e\u4f8b",id:"261111-\u83b7\u53d6-schedulermodel-\u5b9e\u4f8b",level:3},{value:"26.1.11.2 \u83b7\u53d6 SchedulerBuilder
",id:"261112-\u83b7\u53d6-schedulerbuilder",level:3},{value:"26.1.11.3 \u83b7\u53d6 JobBuilder
",id:"261113-\u83b7\u53d6-jobbuilder",level:3},{value:"26.1.11.4 \u83b7\u53d6 TriggerBuilder
\u96c6\u5408",id:"261114-\u83b7\u53d6-triggerbuilder-\u96c6\u5408",level:3},{value:"26.1.11.5 \u83b7\u53d6\u5355\u4e2a TriggerBuilder
",id:"261115-\u83b7\u53d6\u5355\u4e2a-triggerbuilder",level:3},{value:"26.1.11.6 \u83b7\u53d6\u4f5c\u4e1a\u4fe1\u606f",id:"261116-\u83b7\u53d6\u4f5c\u4e1a\u4fe1\u606f",level:3},{value:"26.1.11.7 \u83b7\u53d6\u4f5c\u4e1a\u89e6\u53d1\u5668\u96c6\u5408",id:"261117-\u83b7\u53d6\u4f5c\u4e1a\u89e6\u53d1\u5668\u96c6\u5408",level:3},{value:"26.1.11.8 \u83b7\u53d6\u5355\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"261118-\u83b7\u53d6\u5355\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.9 \u4fdd\u5b58\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"261119-\u4fdd\u5b58\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.10 \u66f4\u65b0\u4f5c\u4e1a\u4fe1\u606f",id:"2611110-\u66f4\u65b0\u4f5c\u4e1a\u4fe1\u606f",level:3},{value:"26.1.11.11 \u6dfb\u52a0\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"2611111-\u6dfb\u52a0\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.12 \u66f4\u65b0\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"2611112-\u66f4\u65b0\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.13 \u5220\u9664\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"2611113-\u5220\u9664\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.14 \u5220\u9664\u5f53\u524d\u4f5c\u4e1a",id:"2611114-\u5220\u9664\u5f53\u524d\u4f5c\u4e1a",level:3},{value:"26.1.11.15 \u5224\u65ad\u4f5c\u4e1a\u89e6\u53d1\u5668\u662f\u5426\u5b58\u5728",id:"2611115-\u5224\u65ad\u4f5c\u4e1a\u89e6\u53d1\u5668\u662f\u5426\u5b58\u5728",level:3},{value:"26.1.11.16 \u542f\u52a8\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"2611116-\u542f\u52a8\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.17 \u6682\u505c\u4f5c\u4e1a\u89e6\u53d1\u5668",id:"2611117-\u6682\u505c\u4f5c\u4e1a\u89e6\u53d1\u5668",level:3},{value:"26.1.11.18 \u5f3a\u5236\u89e6\u53d1\u4f5c\u4e1a\u6301\u4e45\u5316\u64cd\u4f5c",id:"2611118-\u5f3a\u5236\u89e6\u53d1\u4f5c\u4e1a\u6301\u4e45\u5316\u64cd\u4f5c",level:3},{value:"26.1.11.19 \u542f\u52a8\u5f53\u524d\u4f5c\u4e1a",id:"2611119-\u542f\u52a8\u5f53\u524d\u4f5c\u4e1a",level:3},{value:"26.1.11.20 \u6682\u505c\u5f53\u524d\u4f5c\u4e1a",id:"2611120-\u6682\u505c\u5f53\u524d\u4f5c\u4e1a",level:3},{value:"26.1.11.21 \u6821\u5bf9\u5f53\u524d\u4f5c\u4e1a",id:"2611121-\u6821\u5bf9\u5f53\u524d\u4f5c\u4e1a",level:3},{value:"26.1.11.22 \u5f3a\u5236\u5237\u65b0\u5f53\u524d\u4f5c\u4e1a",id:"2611122-\u5f3a\u5236\u5237\u65b0\u5f53\u524d\u4f5c\u4e1a",level:3},{value:"26.1.11.23 \u8f6c\u6362\u6210 JSON
\u683c\u5f0f",id:"2611123-\u8f6c\u6362\u6210-json-\u683c\u5f0f",level:3},{value:"26.1.11.24 \u8f6c\u6362\u6210\u53ef\u679a\u4e3e\u5b57\u5178",id:"2611124-\u8f6c\u6362\u6210\u53ef\u679a\u4e3e\u5b57\u5178",level:3},{value:"26.1.11.25 \u7acb\u5373\u6267\u884c\u4f5c\u4e1a",id:"2611125-\u7acb\u5373\u6267\u884c\u4f5c\u4e1a",level:3},{value:"26.1.12 \u4f5c\u4e1a\u6301\u4e45\u5316\u5668 IJobPersistence
",id:"26112-\u4f5c\u4e1a\u6301\u4e45\u5316\u5668-ijobpersistence",level:2},{value:"26.1.12.1 \u5173\u4e8e\u4f5c\u4e1a\u6301\u4e45\u5316\u5668",id:"261121-\u5173\u4e8e\u4f5c\u4e1a\u6301\u4e45\u5316\u5668",level:3},{value:"26.1.12.2 \u5b9e\u73b0\u4f5c\u4e1a\u6301\u4e45\u5316\u5668",id:"261122-\u5b9e\u73b0\u4f5c\u4e1a\u6301\u4e45\u5316\u5668",level:3},{value:"26.1.12.3 IJobPersistence
\u8be6\u7ec6\u8bf4\u660e",id:"261123-ijobpersistence-\u8be6\u7ec6\u8bf4\u660e",level:3},{value:"26.1.12.4 \u5404\u7c7b\u6570\u636e\u5e93\u521b\u5efa\u4f5c\u4e1a\u6301\u4e45\u5316\u8868\u8bed\u53e5",id:"261124-\u5404\u7c7b\u6570\u636e\u5e93\u521b\u5efa\u4f5c\u4e1a\u6301\u4e45\u5316\u8868\u8bed\u53e5",level:3},{value:"26.1.13 \u4f5c\u4e1a\u96c6\u7fa4\u63a7\u5236",id:"26113-\u4f5c\u4e1a\u96c6\u7fa4\u63a7\u5236",level:2},{value:"26.1.13.1 \u5b9e\u73b0\u96c6\u7fa4\u6545\u969c\u8f6c\u79fb",id:"261131-\u5b9e\u73b0\u96c6\u7fa4\u6545\u969c\u8f6c\u79fb",level:3},{value:"26.1.13.2 \u4f5c\u4e1a\u96c6\u7fa4\u6570\u636e\u5e93\u8868\u8bbe\u8ba1",id:"261132-\u4f5c\u4e1a\u96c6\u7fa4\u6570\u636e\u5e93\u8868\u8bbe\u8ba1",level:3},{value:"26.1.13.3 \u5982\u4f55\u5b9e\u73b0\u8d1f\u8f7d\u5747\u8861",id:"261133-\u5982\u4f55\u5b9e\u73b0\u8d1f\u8f7d\u5747\u8861",level:3},{value:"26.1.14 ScheduleServe
\u9759\u6001\u7c7b",id:"26114-scheduleserve-\u9759\u6001\u7c7b",level:2},{value:"26.1.15 \u5982\u4f55\u90e8\u7f72",id:"26115-\u5982\u4f55\u90e8\u7f72",level:2},{value:"26.1.15.1 Worker Service
\u4ee3\u7801\u96c6\u6210\u4f8b\u5b50",id:"261151-worker-service-\u4ee3\u7801\u96c6\u6210\u4f8b\u5b50",level:3},{value:"26.1.16 Dashboard
\u770b\u677f\u529f\u80fd",id:"26116-dashboard-\u770b\u677f\u529f\u80fd",level:2},{value:"26.1.16.1 \u5728 Worker Service
\u4e2d\u6ce8\u518c",id:"261161-\u5728-worker-service-\u4e2d\u6ce8\u518c",level:3},{value:"26.1.16.2 \u770b\u677f\u914d\u7f6e\u9009\u9879",id:"261162-\u770b\u677f\u914d\u7f6e\u9009\u9879",level:3},{value:"26.1.17 \u5e38\u89c1\u95ee\u9898",id:"26117-\u5e38\u89c1\u95ee\u9898",level:2},{value:"26.1.17.1 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u4e2d\u83b7\u53d6\u5f53\u524d\u65f6\u95f4\u5b58\u5728\u504f\u5dee",id:"261171-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u4e2d\u83b7\u53d6\u5f53\u524d\u65f6\u95f4\u5b58\u5728\u504f\u5dee",level:3},{value:"26.1.17.2 \u4f5c\u4e1a\u89e6\u53d1\u5668\u53c2\u6570\u5e8f\u5217\u5316/\u53cd\u5e8f\u5217\u5316",id:"261172-\u4f5c\u4e1a\u89e6\u53d1\u5668\u53c2\u6570\u5e8f\u5217\u5316\u53cd\u5e8f\u5217\u5316",level:3},{value:"26.1.17.3 \u4f5c\u4e1a\u4fe1\u606f\u989d\u5916\u6570\u636e\u5e8f\u5217\u5316/\u53cd\u5e8f\u5217\u5316",id:"261173-\u4f5c\u4e1a\u4fe1\u606f\u989d\u5916\u6570\u636e\u5e8f\u5217\u5316\u53cd\u5e8f\u5217\u5316",level:3},{value:"26.1.17.4 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5ef6\u8fdf\u5904\u7406",id:"261174-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5ef6\u8fdf\u5904\u7406",level:3},{value:"26.1.17.5 \u5b9a\u65f6\u4efb\u52a1\u90e8\u7f72\u8bf4\u660e",id:"261175-\u5b9a\u65f6\u4efb\u52a1\u90e8\u7f72\u8bf4\u660e",level:3},{value:"26.1.18 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"26118-\u53cd\u9988\u4e0e\u5efa\u8bae",level:2}];function j(e){const r={a:"a",admonition:"admonition",code:"code",del:"del",h2:"h2",h3:"h3",hr:"hr",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components},{Details:n}=r;return n||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n,{children:[(0,s.jsx)("summary",{children:"\ud83d\udcdd \u6a21\u5757\u66f4\u65b0\u65e5\u5fd7"}),(0,s.jsx)("div",{children:(0,s.jsxs)("div",{children:[(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.strong,{children:"\u65b0\u7279\u6027"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Http"})," \u4f5c\u4e1a\u8bf7\u6c42\u5934 ",(0,s.jsx)(r.code,{children:"Headers"})," \u548c\u4f5c\u4e1a\u5206\u7ec4 ",(0,s.jsx)(r.code,{children:"Group"})," \u548c\u63cf\u8ff0 ",(0,s.jsx)(r.code,{children:"Description"})," \u652f\u6301 ",(0,s.jsx)("sup",{children:"4.8.8.46"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.10.09"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I85Z7S",children:"#I85Z7S"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f\u5217\u8868\u652f\u6301\u4f5c\u4e1a\u5206\u7ec4\u540d\u6392\u5e8f ",(0,s.jsx)("sup",{children:"4.8.8.43"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.09.14"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I7YQ9V",children:"#I7YQ9V"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u8ba1\u5212 ",(0,s.jsx)(r.code,{children:"OnChanged"})," \u4e8b\u4ef6\u5904\u7406 ",(0,s.jsx)("sup",{children:"4.8.8.29"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.06.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/e4c4cf1d418f3cc2291eca7d7dd1c8b62d17b0e9",children:"e4c4cf1"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u652f\u6301\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55 ",(0,s.jsx)(r.code,{children:"VisualPath"})," \u914d\u7f6e\u90e8\u7f72 ",(0,s.jsx)("sup",{children:"4.8.8.20"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.05.18"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Sundial/issues/I740IA",children:"#I740IA"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5de5\u5382 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u652f\u6301 ",(0,s.jsx)("sup",{children:"4.8.8.13"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.05.08"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/ad58dd3141ed40e58cd486895ac6c1f21803797c",children:"ad58dd3"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Schedular.CompileCSharpClassCode(code)"})," \u652f\u6301\u52a8\u6001\u7f16\u8bd1\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u4ee3\u7801 ",(0,s.jsx)("sup",{children:"4.8.8.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/fe1e8a1768c7020477684689b35a2a1349ec2b01",children:"fe1e8a1"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u652f\u6301\u914d\u7f6e ",(0,s.jsx)(r.code,{children:"IJob"})," \u6267\u884c\u5f02\u5e38 ",(0,s.jsx)(r.code,{children:"FallbackAsync"})," \u56de\u9000\u7b56\u7565 ",(0,s.jsx)("sup",{children:"4.8.8.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/7671489a46ec7c957e92b7fbf9836e27f9077e24",children:"7671489"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u652f\u6301\u5728\u975e ",(0,s.jsx)(r.code,{children:"IOC/DI"})," \u9879\u76ee\u7c7b\u578b\u4e2d\u4f7f\u7528 ",(0,s.jsx)("sup",{children:"4.8.8.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.24"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Sundial/issues/I6YJNB",children:"#I6YJNB"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f\u652f\u6301\u81ea\u5b9a\u4e49\u5237\u65b0\u9891\u7387 ",(0,s.jsx)(r.code,{children:"SyncRate"})," \u529f\u80fd ",(0,s.jsx)("sup",{children:"4.8.7.43"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.12"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/703b465f41510d86976d325cd31d7f8eba3a31ec",children:"703b465"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f\u652f\u6301\u5b8c\u5168\u81ea\u5b9a\u4e49 ",(0,s.jsx)(r.code,{children:"RequestPath"})," \u5165\u53e3\u5730\u5740\u529f\u80fd ",(0,s.jsx)("sup",{children:"4.8.7.34"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.04"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/24736f6421dd5aa90289fbb9bc519e6ef55e667f",children:"24736f6"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u4e00\u7cfb\u5217 ",(0,s.jsx)(r.code,{children:".AlterTo"})," \u4fee\u6539\u4f5c\u4e1a\u89e6\u53d1\u5668\u89e6\u53d1\u65f6\u95f4\u4fbf\u6377\u65b9\u6cd5"]})," ",(0,s.jsx)("sup",{children:"4.8.7.31"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.31"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/0349017902835bed91041fb3ea1ee987b0a81bbb",children:"0349017"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f ",(0,s.jsx)(r.code,{children:"UI"})," \u4f5c\u4e1a\u5217\u8868 ",(0,s.jsx)(r.code,{children:"\u6700\u8fd1\u6267\u884c\u65f6\u95f4"})," \u5217\u548c\u4f18\u5316\u663e\u793a\u6548\u679c ",(0,s.jsx)("sup",{children:"4.8.7.12"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.15"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/26462a84e553e39ce4cddd5128833ff732c85f3e",children:"26462a8"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/cb5dd17969244987b847fcd96825d28b243a5b9f",children:"cb5dd17"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u8ba1\u5212/\u5de5\u5382\u7acb\u5373\u6267\u884c ",(0,s.jsx)(r.code,{children:"RunJob"})," \u65b9\u6cd5 ",(0,s.jsx)("sup",{children:"4.8.7.11"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.15"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6LD9X",children:"#I6LD9X"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f ",(0,s.jsx)(r.code,{children:"UI"})," \u63d0\u4f9b\u7acb\u5373\u6267\u884c\u529f\u80fd ",(0,s.jsx)("sup",{children:"4.8.7.11"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.15"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6LD9X",children:"#I6LD9X"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u6267\u884c\u4e0a\u4e0b\u6587 ",(0,s.jsx)(r.code,{children:"JobExecutionContext"})," \u670d\u52a1\u63d0\u4f9b\u5668 ",(0,s.jsx)(r.code,{children:"ServiceProvider"})," \u5c5e\u6027 ",(0,s.jsx)("sup",{children:"4.8.7.10"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.14"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/02586f83edb4f98e4801ae65080c2d6aa5545763",children:"02586f8"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"HTTP"})," \u4f5c\u4e1a\uff0c\u652f\u6301\u5b9a\u65f6\u8bf7\u6c42\u4e92\u8054\u7f51 ",(0,s.jsx)(r.code,{children:"URL"})," \u5730\u5740"]})," ",(0,s.jsx)("sup",{children:"4.8.7.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.11"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/01d446620c20e373f198195797896d8c96feeb15",children:"01d4466"})]}),"\n"]}),"\n"]}),"\n"]}),(0,s.jsxs)(n,{style:{marginLeft:50},children:[(0,s.jsx)("summary",{children:"\u67e5\u770b\u53d8\u5316"}),(0,s.jsx)("div",{children:(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:'services.AddSchedule(options =>\r\n{\r\n options.AddHttpJob(request =>\r\n {\r\n request.RequestUri = "https://www.chinadot.net";\r\n request.HttpMethod = HttpMethod.Get;\r\n // request.Body = "{}"; // \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u4f53\r\n }, Triggers.PeriodSeconds(5));\r\n});\n'})})})]}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"Trigger"})," \u6267\u884c\u7ed3\u679c ",(0,s.jsx)(r.code,{children:"Result"})," \u548c\u6267\u884c\u8017\u65f6 ",(0,s.jsx)(r.code,{children:"ElapsedTime"})," \u5c5e\u6027"]})," ",(0,s.jsx)("sup",{children:"4.8.7.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.11"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/01d446620c20e373f198195797896d8c96feeb15",children:"01d4466"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u770b\u677f\u652f\u6301\u67e5\u770b\u4f5c\u4e1a\u89e6\u53d1\u5668\u6267\u884c\u7ed3\u679c ",(0,s.jsx)(r.code,{children:"Result"})," \u548c\u6267\u884c\u8017\u65f6 ",(0,s.jsx)(r.code,{children:"ElapsedTime"})," \u5c5e\u6027"]})," ",(0,s.jsx)("sup",{children:"4.8.7.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.11"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/01d446620c20e373f198195797896d8c96feeb15",children:"01d4466"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f11\u7720\u65f6\u957f\u548c\u5524\u9192\u65f6\u673a\u65e5\u5fd7\u8f93\u51fa ",(0,s.jsx)("sup",{children:"4.8.7.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.08"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6LANE",children:"#I6LANE"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"IScheduler.[Try]UpdateDetail(builder => {})"})," \u548c ",(0,s.jsx)(r.code,{children:"IScheduler.[Try]UpdateTrigger(triggerId, builder => {})"})," \u91cd\u8f7d\u65b9\u6cd5 ",(0,s.jsx)("sup",{children:"4.8.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.02.08"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/6e43a542f1a7e10bf996c6e0179a40d434d8682e",children:"6e43a54"})]}),"\n"]}),"\n"]}),"\n"]}),(0,s.jsxs)(n,{style:{marginLeft:50},children:[(0,s.jsx)("summary",{children:"\u67e5\u770b\u53d8\u5316"}),(0,s.jsxs)("div",{children:[(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:"\u66f4\u65b0\u4f5c\u4e1a\u4fe1\u606f"}),"\n"]}),(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,8}",children:'// \u8fd4\u56de ScheduleResult \u7c7b\u578b\r\nvar scheduleResult = Scheduler.TryUpdateDetail(jobBuilder =>\r\n{\r\n jobBuilder.SetDescription("~~~");\r\n}, out var jobDetail);\r\n\r\n// \u65e0\u8fd4\u56de\u503c\r\nscheduler.UpdateDetail(jobBuilder =>\r\n{\r\n jobBuilder.SetDescription("~~~");\r\n});\n'})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:"\u66f4\u65b0\u4f5c\u4e1a\u89e6\u53d1\u5668"}),"\n"]}),(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,8}",children:'// \u8fd4\u56de ScheduleResult \u7c7b\u578b\r\nvar scheduleResult = scheduler.TryUpdateTrigger("triggerId", triggerBuilder =>\r\n{\r\n triggerBuilder.SetDescription("~~");\r\n}, out var trigger);\r\n\r\n// \u65e0\u8fd4\u56de\u503c\r\nscheduler.UpdateTrigger("triggerId", triggerBuilder =>\r\n{\r\n triggerBuilder.SetDescription("~~");\r\n});\n'})})]})]}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Dashboard"})," \u53ef\u81ea\u5b9a\u4e49\u5165\u53e3\u5730\u5740 ",(0,s.jsx)(r.code,{children:"/schedule"})," ",(0,s.jsx)("sup",{children:"4.8.5.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.02.02"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/c5639f5b8d1ae5164bf812540aeb98f90487e855",children:"c5639f5"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u6267\u884c\u4e0a\u4e0b\u6587 ",(0,s.jsx)(r.code,{children:"RunId"})," \u5c5e\u6027\uff0c\u7528\u4e8e\u6807\u8bc6\u5355\u6b21\u4f5c\u4e1a\u89e6\u53d1\u5668\u6267\u884c ",(0,s.jsx)("sup",{children:"4.8.5.1"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/1aac4707d270cb0fe66eab67490d946029a9e41d",children:"1aac470"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Dashboard"})," \u67e5\u770b\u4f5c\u4e1a\u89e6\u53d1\u5668\u6700\u8fd1\u8fd0\u884c\u8bb0\u5f55\u529f\u80fd ",(0,s.jsx)("sup",{children:"4.8.4.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.03"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/e7d24d84bcc448b0a13f8e0b76328669261af44b",children:"e7d24d8"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"trigger.GetTimelines()"})," \u83b7\u53d6\u6700\u8fd1 ",(0,s.jsx)(r.code,{children:"10"})," \u6761\u8fd0\u884c\u8bb0\u5f55\u5217\u8868 ",(0,s.jsx)("sup",{children:"4.8.4.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.03"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/e7d24d84bcc448b0a13f8e0b76328669261af44b",children:"e7d24d8"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Dashboard"})," \u770b\u677f"]})," ",(0,s.jsx)("sup",{children:"4.8.4"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/d3f966921dfa757c12c2bd071fb19fc166a2f24e",children:"d3f9669"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"IScheduler.GetEnumerable()"})," \u65b9\u6cd5\uff0c\u53ef\u5c06\u4f5c\u4e1a\u8ba1\u5212\u8f6c\u6362\u6210\u53ef\u679a\u4e3e\u5b57\u5178 ",(0,s.jsx)("sup",{children:"4.8.4"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/4d5235c37a9ef5e66e92847e65ef9786bcd7387c",children:"4d5235c"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u914d\u7f6e\u9009\u9879 ",(0,s.jsx)(r.code,{children:"options.JobDetail.LogEnabled"})," \u914d\u7f6e\uff0c\u53ef\u81ea\u52a8\u8f93\u51fa\u6267\u884c\u65e5\u5fd7 ",(0,s.jsx)("sup",{children:"4.8.3.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.14"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/58d2c20de05dc458b206863f7814e89866e7522b",children:"58d2c20"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"IScheduler"})," \u5bf9\u8c61\u6bcf\u6b21\u64cd\u4f5c\u540e\u81ea\u52a8\u5237\u65b0\u548c\u63d0\u4f9b\u624b\u52a8\u5237\u65b0 ",(0,s.jsx)(r.code,{children:"Reload()"})," \u65b9\u6cd5"]})," ",(0,s.jsx)("sup",{children:"4.8.3.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.09"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I65EQ1#note_15047484_link",children:"#I65EQ1"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u95f4\u9694\u5206\u949f\u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"Triggers.PeriodMinutes(5)"})," \u548c ",(0,s.jsx)(r.code,{children:"[PeriodMinutes(5)]"})," \u7279\u6027 ",(0,s.jsx)("sup",{children:"4.8.2.8"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.01"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/8e1f06fa2161ee2bf8bcea29af8aaa5a60ef9db9",children:"8e1f06f"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u5de5\u4f5c\u65e5\u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"Triggers.Workday()"})," \u548c ",(0,s.jsx)(r.code,{children:"[Workday]"})," \u7279\u6027 ",(0,s.jsx)("sup",{children:"4.8.2.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/28b2d20b3f6034a4cdf5827576c34412315fbb15",children:"28b2d20"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u6821\u5bf9\u529f\u80fd\uff0c\u53ef\u5bf9\u8bef\u5dee\u8fdb\u884c\u6821\u6b63 ",(0,s.jsx)("sup",{children:"4.8.2.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/f725a252e6a89f9dea6489d4e54452077b1935e5",children:"f725a25"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Triggers"})," \u6240\u6709\u5e26 ",(0,s.jsx)(r.code,{children:"At"})," \u7684 ",(0,s.jsx)(r.code,{children:"Cron"})," \u8868\u8fbe\u5f0f\u89e6\u53d1\u5668\u6784\u5efa\u5668\u53ca\u7279\u6027"]})," ",(0,s.jsx)("sup",{children:"4.8.2.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.29"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Sundial/issues/I63PLR",children:"#I63PLR"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1\u6279\u91cf\u6dfb\u52a0 ",(0,s.jsx)(r.code,{children:"SchedulerBuilder"})," \u4f5c\u4e1a\u529f\u80fd ",(0,s.jsx)("sup",{children:"4.8.2.4"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.29"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/5faa67b7817459cb0ee0add86a6e53c17ff51a05",children:"5faa67b"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"BuildSqlType"})," \u914d\u7f6e\uff0c\u53ef\u8bbe\u7f6e\u751f\u6210\u4e0d\u540c\u6570\u636e\u5e93\u7c7b\u578b\u7684 ",(0,s.jsx)(r.code,{children:"SQL"})," \u8bed\u53e5 ",(0,s.jsx)("sup",{children:"4.8.2.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.29"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/293f9bce34fc4f70eacae1043ed697d31da88409",children:"293f9bc"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/pulls/675",children:"!675"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u548c ",(0,s.jsx)(r.code,{children:"Trigger"})," \u81ea\u5b9a\u4e49 ",(0,s.jsx)(r.code,{children:"ConvertToSQL"})," \u8f93\u51fa ",(0,s.jsx)(r.code,{children:"SQL"})," \u914d\u7f6e ",(0,s.jsx)("sup",{children:"4.8.2"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.27"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/0bb9d8f1f3606af145b44c2984b87fdc020f02e1",children:"0bb9d8f"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"ResetOnlyOnce"})," \u5c5e\u6027\uff0c\u652f\u6301\u53ea\u8fd0\u884c\u4e00\u6b21\u7684\u4f5c\u4e1a\u91cd\u65b0\u542f\u52a8\u670d\u52a1\u91cd\u590d\u6267\u884c"]})," ",(0,s.jsx)("sup",{children:"4.8.1.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/a8be728eac986ebc5f44718b08c67aaee8b89dc6",children:"a8be728"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u52a8\u6001\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u59d4\u6258\u652f\u6301 ",(0,s.jsx)("sup",{children:"4.8.1.8"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.27"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/e02266c44187dbc2b416abe1ca4112ce13c89180",children:"e02266c"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.strong,{children:"\u7a81\u7834\u6027\u53d8\u5316"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u79fb\u9664"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u770b\u677f ",(0,s.jsx)(r.code,{children:"SyncRate"})," \u914d\u7f6e\uff0c\u524d\u540e\u7aef\u91c7\u7528\u6700\u65b0\u7684 ",(0,s.jsx)(r.code,{children:"SSE"})," \u63a8\u9001\u6280\u672f\u66ff\u4ee3"]})," ",(0,s.jsx)("sup",{children:"4.8.8.29"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.06.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/e4c4cf1d418f3cc2291eca7d7dd1c8b62d17b0e9",children:"e4c4cf1"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u52a8\u6001\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"DynamicJob"})," \u59d4\u6258/\u65b9\u6cd5\u7b7e\u540d"]})," ",(0,s.jsx)("sup",{children:"4.8.7.10"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.14"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/6d56b531f34c9d616202a6f53c31a10974065d56",children:"6d56b53"})]}),"\n"]}),"\n"]}),"\n"]}),(0,s.jsxs)(n,{style:{marginLeft:50},children:[(0,s.jsx)("summary",{children:"\u67e5\u770b\u53d8\u5316"}),(0,s.jsxs)("div",{children:[(0,s.jsxs)(r.p,{children:["\u51cf\u5c11\u8bb0\u5fc6\u8d1f\u62c5\uff0c\u7edf\u4e00\u52a8\u6001\u4f5c\u4e1a\u548c\u666e\u901a\u4f5c\u4e1a\u7684 ",(0,s.jsx)(r.code,{children:"ExecuteAsync"})," \u65b9\u6cd5\u7b7e\u540d\uff0c\u6545\u505a\u51fa\u8c03\u6574\u3002"]}),(0,s.jsx)(r.p,{children:"\u7531\uff1a"}),(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,3}",children:'options.AddJob((serviceProvider, context, stoppingToken) =>\r\n{\r\n serviceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n}, Triggers.PeriodSeconds(5));\n'})}),(0,s.jsx)(r.p,{children:"\u8c03\u6574\u4e3a\uff1a"}),(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,3}",children:'options.AddJob((context, stoppingToken) =>\r\n{\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n}, Triggers.PeriodSeconds(5));\n'})})]})]}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," ",(0,s.jsx)(r.strong,{children:"\u5b9a\u65f6\u4efb\u52a1\u5e95\u5c42\u6240\u6709\u4ee3\u7801\uff0c\u65e5\u5fd7\uff0c\u6ce8\u91ca\uff0c\u6587\u6863"})," ",(0,s.jsx)("sup",{children:"4.8.1.10"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.05"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.strong,{children:"\u95ee\u9898\u4fee\u590d"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u8bbe\u7f6e\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"Result"})," \u540e\u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u4e0d\u80fd\u91cd\u7f6e\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.9.1.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.11.24"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/147215f1631f58fca900f17cca5695f9431555e5",children:"147215f"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u9ad8\u9891\u4f5c\u4e1a\u4e0b\u6301\u4e45\u5316\u64cd\u4f5c\u51fa\u73b0\u963b\u585e\u5361\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.8.51"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.11.06"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/f1d0b4a9d7d65d5263109d5370b8d87705f4178b",children:"f1d0b4a"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f\u4e2d\u95f4\u4ef6 ",(0,s.jsx)(r.code,{children:"SSE"})," \u8bf7\u6c42\u4e0d\u662f\u957f\u8fde\u63a5\u5bfc\u81f4\u8fde\u63a5\u9891\u7e41\u521d\u59cb\u5316\u9500\u6bc1 ",(0,s.jsx)("sup",{children:"4.8.8.49"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.10.26"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/1997f1b99043eb80accac4e6a0c60c4e33d77183",children:"1997f1b"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u56e0\u4e0a\u4e00\u7248\u672c\u4fee\u6539 ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/4e2615b00da0b2db756e4084be882c0362c442f5",children:"4e2615b"})," \u5bfc\u81f4\u81ea\u5b9a\u4e49\u4f5c\u4e1a\u89e6\u53d1\u5668\u5f02\u5e38\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.8.36"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.07.06"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I7J59D",children:"#I7J59D"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u56e0\u4e0a\u4e00\u7248\u672c\u4fee\u6539 ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/4e2615b00da0b2db756e4084be882c0362c442f5",children:"4e2615b"})," \u5bfc\u81f4 ",(0,s.jsx)(r.code,{children:"Cron"})," \u89e3\u6790\u5f02\u5e38\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.8.32"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.06.28"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I7GQ5I",children:"#I7GQ5I"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u8bbe\u7f6e\u989d\u5916\u6570\u636e\u4e0d\u652f\u6301 ",(0,s.jsx)(r.code,{children:"long/int64"})," \u7c7b\u578b\u53c2\u6570\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.8.31"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.06.28"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/4e2615b00da0b2db756e4084be882c0362c442f5",children:"4e2615b"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u4f11\u7720\u6beb\u79d2\u6570\u5927\u4e8e ",(0,s.jsx)(r.code,{children:"int.MaxValue"})," \u65f6\u51fa\u73b0 ",(0,s.jsx)(r.code,{children:"ArgumentOutOfRangeException"})," ",(0,s.jsx)("sup",{children:"4.8.8.27"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.06.21"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I7F6ZT",children:"#I7F6ZT"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u901a\u8fc7\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Id"})," \u5220\u9664\u4f5c\u4e1a\u4e0d\u80fd\u5220\u9664\u4f5c\u4e1a\u89e6\u53d1\u5668\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.7.35"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.05"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/312ca357cca1e59e1b6cc67ec499bf512f79dd0a",children:"312ca35"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u72b6\u6001\u4e3a ",(0,s.jsx)(r.code,{children:"\u79ef\u538b:0"})," \u548c ",(0,s.jsx)(r.code,{children:"\u5f52\u6863:6"})," \u65f6\u8c03\u7528\u7acb\u5373\u6267\u884c\u540e\u4e0d\u80fd\u6062\u590d\u4e0a\u4e00\u6b21\u72b6\u6001 ",(0,s.jsx)("sup",{children:"4.8.7.18"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.21"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/6f5aae8dd1169b7111ff6801111691764b03ba29",children:"6f5aae8"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u66f4\u65b0\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"null"})," \u503c\u9ed8\u8ba4\u88ab\u8df3\u8fc7\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.7.17"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.20"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6OHO4",children:"#I6OHO4"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u751f\u6210 ",(0,s.jsx)(r.code,{children:"SQL"})," \u8bed\u53e5\u6ca1\u6709\u5904\u7406 ",(0,s.jsx)(r.code,{children:"'"})," \u8f6c\u4e49\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.7.15"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.19"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6NXKA",children:"#I6NXKA"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u670d\u52a1\u5728\u505c\u6b62\u8fdb\u7a0b\u65f6\u4f1a\u5361\u4f4f ",(0,s.jsx)(r.code,{children:"30\u79d2"})," \u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.7.8"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.13"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6MI9I",children:"#I6MI9I"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6MHOU",children:"#I6MHOU"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u770b\u677f\u5220\u9664\u4e0d\u5b58\u5728\u7684\u4f5c\u4e1a\u89e6\u53d1\u5668\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,s.jsx)("sup",{children:"4.8.7.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.11"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/01d446620c20e373f198195797896d8c96feeb15",children:"01d4466"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"StartAll"})," \u51fa\u73b0\u4e2a\u522b\u4f5c\u4e1a\u663e\u793a ",(0,s.jsx)(r.code,{children:"\u65e0\u89e6\u53d1\u65f6\u95f4"})," \u7684\u72b6\u6001 ",(0,s.jsx)("sup",{children:"4.8.4.14"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.12"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6A08X",children:"#I6A08X"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u505c\u6b62\u4f5c\u4e1a\u89e6\u53d1\u5668\u540e\u8fd0\u884c\u8bb0\u5f55\u4e0d\u80fd\u5199\u5165\u6700\u65b0\u8bb0\u5f55\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.4.8"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.05"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/d4c553fb9b0037ab29942ccc2a25a386fc28c1db",children:"d4c553f"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u4f7f\u7528 ",(0,s.jsx)(r.code,{children:"Furion.Pure"})," \u5305\u8bbf\u95ee ",(0,s.jsx)(r.code,{children:"Dashboard"})," \u51fa\u73b0 ",(0,s.jsx)(r.code,{children:"404"})," \u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.4.2"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.01.02"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/21977b70ef84fd674bb306ab86ef032f7f28c7a7",children:"21977b7"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"scheduler.RemoveTrigger(triggerId)"})," \u62a5\u5f02\u5e38\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.3.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.09"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I65EQ1#note_15047484_link",children:"#I65EQ1"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u89e6\u53d1\u5668\u914d\u7f6e\u4e86 ",(0,s.jsx)(r.code,{children:"EndTime"})," \u548c ",(0,s.jsx)(r.code,{children:"StartTime"})," \u4e4b\u540e ",(0,s.jsx)(r.code,{children:"Status"})," \u6ca1\u6709\u5bf9\u5e94\u4e0a ",(0,s.jsx)("sup",{children:"4.8.3.1"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.09"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/52a5506c2fda7c31df01b2e90af7ad6b0c5f94aa",children:"52a5506"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"scheduler.AddTrigger(triggerBuilder)"})," \u65e0\u6548\u7684\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.3.1"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.09"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I65EQ1",children:"#I65EQ1"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u4f5c\u4e1a\u62e5\u6709\u591a\u4e2a\u89e6\u53d1\u5668\u65f6\u6682\u505c\u4f5c\u4e1a\u540e\u4f9d\u7136\u5b58\u5728\u4e2a\u522b\u672a\u6682\u505c\u7684\u6e05\u7a7a\uff08\u5e76\u53d1\u95ee\u9898\uff09 ",(0,s.jsx)("sup",{children:"4.8.2.12"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.07"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I655W9",children:"#I655W9"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u4f5c\u4e1a\u89e6\u53d1\u5668\u4e0d\u7b26\u5408\u4e0b\u4e00\u6b21\u6267\u884c\u89c4\u5f8b\u4f46 ",(0,s.jsx)(r.code,{children:"NextRunTime"})," \u4e0d\u4e3a ",(0,s.jsx)(r.code,{children:"null"})," \u60c5\u51b5 ",(0,s.jsx)("sup",{children:"4.8.1.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/a8be728eac986ebc5f44718b08c67aaee8b89dc6",children:"a8be728"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u8fd0\u884c\u65f6\u542f\u52a8/\u6682\u505c\u4f5c\u4e1a\u65e0\u6548\u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.1.6"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6368M",children:"#I6368M"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u4fee\u590d"})," \u5b9a\u65f6\u4efb\u52a1\u751f\u6210\u7684 ",(0,s.jsx)(r.code,{children:"SQL"})," \u8bed\u53e5\u4e0d\u652f\u6301 ",(0,s.jsx)(r.code,{children:"MySQL"})," \u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.1.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.26"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I638ZC",children:"#I638ZC"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.strong,{children:"\u5176\u4ed6\u66f4\u6539"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"GC"})," \u56de\u6536\u903b\u8f91\uff0c\u907f\u514d\u9ad8\u9891\u6dfb\u52a0\u4f5c\u4e1a\u5bfc\u81f4 ",(0,s.jsx)(r.code,{children:"\u5c3e\u5ef6\u8fdf"})," \u95ee\u9898 ",(0,s.jsx)("sup",{children:"4.8.8.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.21"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6XIV8",children:"#I6XIV8"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1\u65e5\u5fd7\u8bbe\u8ba1\uff0c\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u65e5\u5fd7\u8f93\u51fa ",(0,s.jsx)("sup",{children:"4.8.8.3"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.21"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I6XI2L",children:"#I6XI2L"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1\u52a8\u6001\u59d4\u6258\u4f5c\u4e1a\u6301\u4e45\u5316\u903b\u8f91\uff0c\u91c7\u7528\u4e0d\u89e6\u53d1\u6301\u4e45\u5316\u64cd\u4f5c ",(0,s.jsx)("sup",{children:"4.8.7.36"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.04.06"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/7bb58b64407f899d5f7f128da64fa972cf4df61b",children:"7bb58b6"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1 ",(0,s.jsx)(r.code,{children:"Http"})," \u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"HttpMethod"})," \u5c5e\u6027\u62fc\u5199\u9519\u6210 ",(0,s.jsx)(r.code,{children:"HttpMedhod"})," ",(0,s.jsx)("sup",{children:"4.8.7.24"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.28"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/pulls/756",children:"!756"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1\u914d\u7f6e\u9009\u9879 ",(0,s.jsx)(r.code,{children:"BuilSqlType"})," \u5c5e\u6027\u547d\u4e3a ",(0,s.jsx)(r.code,{children:"BuildSqlType"})," ",(0,s.jsx)("sup",{children:"4.8.7.11"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.15"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/92117b842f7f8bdeb983bf3dac510f713d8410c2",children:"92117b8"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," ",(0,s.jsxs)(r.strong,{children:["\u5b9a\u65f6\u4efb\u52a1\u67e5\u770b\u4f5c\u4e1a\u89e6\u53d1\u5668\u8fd0\u884c\u8bb0\u5f55\u7531\u4fdd\u5b58 ",(0,s.jsx)(r.code,{children:"10\u6761"})," \u6539\u4e3a ",(0,s.jsx)(r.code,{children:"5\u6761"})]})," ",(0,s.jsx)("sup",{children:"4.8.7.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2023.03.07"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/01d446620c20e373f198195797896d8c96feeb15",children:"01d4466"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1\u8c03\u5ea6\u5668\u65f6\u95f4\u7cbe\u5ea6\uff0c\u63a7\u5236\u6301\u7eed\u6267\u884c\u4e00\u5e74\u8bef\u5dee\u5728 ",(0,s.jsx)(r.code,{children:"100ms"})," \u4ee5\u5185 ",(0,s.jsx)("sup",{children:"4.8.2.9"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.01"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/334d08989503bacd8bf2abb2cc87cf2031dc9da6",children:"334d089"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u8c03\u6574"})," \u5b9a\u65f6\u4efb\u52a1\u4f5c\u4e1a\u8ba1\u5212\u5de5\u5382 ",(0,s.jsx)(r.code,{children:"GetNextRunJobs()"})," \u65b9\u6cd5\u903b\u8f91 ",(0,s.jsx)("sup",{children:"4.8.2.7"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.30"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/issues/I63VS2",children:"#I63VS2"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["\n",(0,s.jsx)(r.p,{children:(0,s.jsx)(r.strong,{children:"\u6587\u6863"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u4f5c\u4e1a\u6267\u884c\u5668\u5b9e\u73b0\u8d85\u65f6\u6587\u6863 ",(0,s.jsx)("sup",{children:"4.8.3.8"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.12.20"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u4f5c\u4e1a\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"ResetOnlyOnce"})," \u6587\u6863 ",(0,s.jsx)("sup",{children:"4.8.1.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/a8be728eac986ebc5f44718b08c67aaee8b89dc6",children:"a8be728"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," ",(0,s.jsxs)(r.strong,{children:["\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"Roslyn"})," \u52a8\u6001\u7f16\u8bd1\u4ee3\u7801\u521b\u5efa ",(0,s.jsx)(r.code,{children:"IJob"})," \u7c7b\u578b\u6587\u6863"]})," ",(0,s.jsx)("sup",{children:"4.8.1.5"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.25"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/2c5e5befc7a335d6ef0e75eea0061aee1e4dd061",children:"2c5e5be"})]}),"\n",(0,s.jsxs)(r.li,{children:["\xa0",(0,s.jsx)(o.Z,{children:"\u65b0\u589e"})," \u81ea\u5b9a\u4e49 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u548c ",(0,s.jsx)(r.code,{children:"Trigger"})," \u8f93\u51fa ",(0,s.jsx)(r.code,{children:"SQL"})," \u6587\u6863 ",(0,s.jsx)("sup",{children:"4.8.2"})," ",(0,s.jsx)("sup",{children:"\u23f1\ufe0f2022.11.27"})," ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Furion/commit/0bb9d8f1f3606af145b44c2984b87fdc020f02e1",children:"0bb9d8f"})]}),"\n"]}),"\n"]}),"\n"]})]})})]}),"\n",(0,s.jsx)(r.admonition,{title:"4.8.0 \u4ee5\u4e0b\u7248\u672c\u8bf4\u660e",type:"warning",children:(0,s.jsxs)(r.p,{children:[(0,s.jsxs)(r.strong,{children:["\u5728 ",(0,s.jsx)(r.code,{children:"Furion 4.8.0+"})," \u7248\u672c\u91c7\u7528 ",(0,s.jsx)(r.a,{href:"https://gitee.com/dotnetchina/Sundial",children:"Sundial"})," \u5b9a\u65f6\u4efb\u52a1\u66ff\u6362\u539f\u6709\u7684 ",(0,s.jsx)(r.code,{children:"TaskScheduler"})]}),"\uff0c",(0,s.jsx)(r.a,{href:"/docs/job-old",children:"\u67e5\u770b\u65e7\u6587\u6863"})]})}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.0 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n","\n","\n",(0,s.jsx)(r.h2,{id:"2611-\u5173\u4e8e\u8c03\u5ea6\u4f5c\u4e1a",children:"26.1.1 \u5173\u4e8e\u8c03\u5ea6\u4f5c\u4e1a"}),"\n",(0,s.jsx)(r.p,{children:"\u8c03\u5ea6\u4f5c\u4e1a\u53c8\u79f0\u5b9a\u65f6\u4efb\u52a1\uff0c\u987e\u540d\u601d\u4e49\uff0c\u5b9a\u65f6\u4efb\u52a1\u5c31\u662f\u5728\u7279\u5b9a\u7684\u65f6\u95f4\u6216\u7b26\u5408\u67d0\u79cd\u65f6\u95f4\u89c4\u5f8b\u81ea\u52a8\u89e6\u53d1\u5e76\u6267\u884c\u4efb\u52a1\u3002"}),"\n",(0,s.jsx)("img",{src:(0,c.Z)("img/scdr.png")}),"\n",(0,s.jsx)(r.h3,{id:"26111-\u4f7f\u7528\u573a\u666f",children:"26.1.1.1 \u4f7f\u7528\u573a\u666f"}),"\n",(0,s.jsx)(r.p,{children:"\u5b9a\u65f6\u4efb\u52a1\u7684\u5e94\u7528\u573a\u666f\u975e\u5e38\u5e7f\uff0c\u51e0\u4e4e\u662f\u6bcf\u4e00\u4e2a\u8f6f\u4ef6\u7cfb\u7edf\u5fc5\u5907\u529f\u80fd\uff1a"}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:"\u53eb\u4f60\u8d77\u5e8a\u7684\u95f9\u949f"}),"\n",(0,s.jsx)(r.li,{children:"\u65e5\u5386\u65e5\u7a0b\u63d0\u9192"}),"\n",(0,s.jsx)(r.li,{children:"\u751f\u65e5\u7eaa\u5ff5\u65e5\u63d0\u9192"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u5907\u4efd\u6570\u636e\u5e93"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u6e05\u7406\u5783\u573e\u6570\u636e"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u53d1\u9001\u8425\u9500\u4fe1\u606f\uff0c\u90ae\u4ef6"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u4e0a\u7ebf\u4ea7\u54c1\uff0c\u6bd4\u5982\u9884\u552e\u4ea7\u54c1\uff0c\u53cc\u5341\u4e00\u6d3b\u52a8"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u53d1\u9001\u4f18\u60e0\u5238"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u53d1\u5e03\uff0c\u5b9e\u73b0 Devops \u529f\u80fd\uff0c\u5982 Jenkins"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u722c\u866b\u6293\u6570\u636e"}),"\n",(0,s.jsx)(r.li,{children:"\u5b9a\u65f6\u5bfc\u51fa\u62a5\u8868\uff0c\u5386\u53f2\u7edf\u8ba1\uff0c\u8003\u52e4\u7edf\u8ba1"}),"\n",(0,s.jsx)(r.li,{children:"..."}),"\n"]}),"\n",(0,s.jsx)(r.h2,{id:"2612-\u5feb\u901f\u5165\u95e8",children:"26.1.2 \u5feb\u901f\u5165\u95e8"}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsxs)(r.li,{children:["\u5b9a\u4e49\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f ",(0,s.jsx)(r.code,{children:"MyJob"}),"\uff1a"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,9,11}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsxs)(r.li,{children:["\u5728 ",(0,s.jsx)(r.code,{children:"Startup.cs"})," \u6ce8\u518c ",(0,s.jsx)(r.code,{children:"Schedule"})," \u670d\u52a1\uff1a"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,3-4}",children:"services.AddSchedule(options =>\r\n{\r\n // \u6ce8\u518c\u4f5c\u4e1a\uff0c\u5e76\u914d\u7f6e\u4f5c\u4e1a\u89e6\u53d1\u5668\r\n options.AddJob(Triggers.Secondly()); // \u8868\u793a\u6bcf\u79d2\u6267\u884c\r\n});\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"3",children:["\n",(0,s.jsx)(r.li,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c"}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,10,12,14,16,18}",children:"info: 2022-12-02 16:51:33.5032989 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 16:51:33.5180669 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 16:51:34.1452041 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 16:51:34.1541701 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 16:51:34.1748401 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 16:51:35.0712571 +08:00 \u661f\u671f\u4e94 L MyJob[0] #4\r\n [C] * * * * * * 1ts 2022-12-02 16:51:35.000 -> 2022-12-02 16:51:36.000\r\ninfo: 2022-12-02 16:51:36.0317375 +08:00 \u661f\u671f\u4e94 L MyJob[0] #14\r\n [C] * * * * * * 2ts 2022-12-02 16:51:36.000 -> 2022-12-02 16:51:37.000\r\ninfo: 2022-12-02 16:51:37.0125007 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [C] * * * * * * 3ts 2022-12-02 16:51:37.000 -> 2022-12-02 16:51:38.000\r\ninfo: 2022-12-02 16:51:38.0179920 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n [C] * * * * * * 4ts 2022-12-02 16:51:38.000 -> 2022-12-02 16:51:39.000\n"})}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"JobExecutionContext"})," \u91cd\u5199\u4e86 ",(0,s.jsx)(r.code,{children:"ToString()"})," \u65b9\u6cd5\u5e76\u63d0\u4f9b\u4ee5\u4e0b\u51e0\u79cd\u683c\u5f0f\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {2,5}",children:"# \u6301\u7eed\u8fd0\u884c\u683c\u5f0f\r\n<\u4f5c\u4e1aId> \u4f5c\u4e1a\u63cf\u8ff0 [\u5e76\u884cC/\u4e32\u884cS] <\u4f5c\u4e1aId \u89e6\u53d1\u5668Id> \u89e6\u53d1\u5668\u5b57\u7b26\u4e32 \u89e6\u53d1\u5668\u63cf\u8ff0 \u89e6\u53d1\u6b21\u6570ts \u89e6\u53d1\u65f6\u95f4 -> \u4e0b\u4e00\u6b21\u89e6\u53d1\u65f6\u95f4\r\n\r\n# \u89e6\u53d1\u505c\u6b62\u683c\u5f0f\r\n<\u4f5c\u4e1aId> \u4f5c\u4e1a\u63cf\u8ff0 [\u5e76\u884cC/\u4e32\u884cS] <\u4f5c\u4e1aId \u89e6\u53d1\u5668Id> \u89e6\u53d1\u5668\u5b57\u7b26\u4e32 \u89e6\u53d1\u5668\u63cf\u8ff0 \u89e6\u53d1\u6b21\u6570ts \u89e6\u53d1\u65f6\u95f4 [\u89e6\u53d1\u5668\u7ec8\u6b62\u72b6\u6001]\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26121-\u6307\u5b9a\u4f5c\u4e1a-id",children:["26.1.2.1 \u6307\u5b9a\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Id"})]}),"\n",(0,s.jsxs)(r.p,{children:["\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e0d\u6307\u5b9a\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Id"})," \u4f1a\u81ea\u52a8\u751f\u6210 ",(0,s.jsx)(r.code,{children:"job[\u7f16\u53f7]"}),"\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:'services.AddSchedule(options =>\r\n{\r\n options.AddJob("myjob", Triggers.Secondly());\r\n});\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,12,14,16}",children:"info: 2022-12-02 17:15:43.3024818 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 17:15:43.3107918 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 17:15:43.9498664 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 17:15:43.9532894 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 17:15:43.9941565 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 17:15:44.1230353 +08:00 \u661f\u671f\u4e94 L MyJob[0] #6\r\n [C] * * * * * * 1ts 2022-12-02 17:15:44.000 -> 2022-12-02 17:15:45.000\r\ninfo: 2022-12-02 17:15:45.0854893 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [C] * * * * * * 2ts 2022-12-02 17:15:45.000 -> 2022-12-02 17:15:46.000\r\ninfo: 2022-12-02 17:15:46.0100813 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n [C] * * * * * * 3ts 2022-12-02 17:15:46.000 -> 2022-12-02 17:15:47.000\n"})}),"\n",(0,s.jsx)(r.h3,{id:"26122-\u591a\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668",children:"26.1.2.2 \u591a\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668"}),"\n",(0,s.jsxs)(r.p,{children:["\u6709\u65f6\u5019\uff0c\u4e00\u4e2a\u4f5c\u4e1a\u652f\u6301\u591a\u79cd\u89e6\u53d1\u65f6\u95f4\uff0c\u6bd4\u5982 ",(0,s.jsx)(r.code,{children:"\u6bcf\u5206\u949f"})," \u6267\u884c\u4e00\u6b21\uff0c\u6bcf ",(0,s.jsx)(r.code,{children:"5\u79d2"})," \u6267\u884c\u4e00\u6b21\uff0c\u6bcf\u5206\u949f\u7b2c ",(0,s.jsx)(r.code,{children:"3/7/8\u79d2"})," \u6267\u884c\u4e00\u6b21\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3-5}",children:'services.AddSchedule(options =>\r\n{\r\n options.AddJob(Triggers.Minutely() // \u6bcf\u5206\u949f\u5f00\u59cb\r\n , Triggers.Period(5000) // \u6bcf 5 \u79d2\uff0c\u8fd8\u652f\u6301 Triggers.PeriodSeconds(5)\uff0cTriggers.PeriodMinutes(5)\uff0cTriggers.PeriodHours(5)\r\n , Triggers.Cron("3,7,8 * * * * ?", CronStringFormat.WithSeconds)); // \u6bcf\u5206\u949f\u7b2c 3/7/8 \u79d2\r\n});\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {6,8,10,12,16,18,20,24,26}",children:"info: 2022-12-02 17:18:53.3593518 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 17:18:53.3663583 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 17:18:54.0381456 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 17:18:54.0708796 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 17:18:54.0770193 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 17:18:54.0800017 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 17:18:54.1206816 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 17:18:59.0040452 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [C] 5000ms 1ts 2022-12-02 17:18:58.927 -> 2022-12-02 17:19:03.944\r\ninfo: 2022-12-02 17:19:00.0440142 +08:00 \u661f\u671f\u4e94 L MyJob[0] #15\r\n [C] * * * * * 1ts 2022-12-02 17:19:00.000 -> 2022-12-02 17:20:00.000\r\ninfo: 2022-12-02 17:19:03.0149075 +08:00 \u661f\u671f\u4e94 L MyJob[0] #6\r\n [C] 3,7,8 * * * * ? 1ts 2022-12-02 17:19:03.000 -> 2022-12-02 17:19:07.000\r\ninfo: 2022-12-02 17:19:03.9519350 +08:00 \u661f\u671f\u4e94 L MyJob[0] #15\r\n [C] 5000ms 2ts 2022-12-02 17:19:03.944 -> 2022-12-02 17:19:08.919\r\ninfo: 2022-12-02 17:19:07.0116797 +08:00 \u661f\u671f\u4e94 L MyJob[0] #4\r\n [C] 3,7,8 * * * * ? 2ts 2022-12-02 17:19:07.000 -> 2022-12-02 17:19:08.000\r\ninfo: 2022-12-02 17:19:08.0078132 +08:00 \u661f\u671f\u4e94 L MyJob[0] #15\r\n [C] 3,7,8 * * * * ? 3ts 2022-12-02 17:19:08.000 -> 2022-12-02 17:20:03.000\r\ninfo: 2022-12-02 17:19:08.9298393 +08:00 \u661f\u671f\u4e94 L MyJob[0] #14\r\n [C] 5000ms 3ts 2022-12-02 17:19:08.919 -> 2022-12-02 17:19:13.897\r\ninfo: 2022-12-02 17:19:13.9056247 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n [C] 5000ms 4ts 2022-12-02 17:19:13.897 -> 2022-12-02 17:19:18.872\r\ninfo: 2022-12-02 17:19:18.8791123 +08:00 \u661f\u671f\u4e94 L MyJob[0] #12\r\n [C] 5000ms 5ts 2022-12-02 17:19:18.872 -> 2022-12-02 17:19:23.846\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26123-\u4e32\u884c-\u6267\u884c",children:["26.1.2.3 ",(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c"]}),"\n",(0,s.jsxs)(r.p,{children:["\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4f5c\u4e1a\u91c7\u7528 ",(0,s.jsx)(r.code,{children:"\u5e76\u884c"})," \u6267\u884c\u65b9\u5f0f\uff0c\u4e5f\u5c31\u662f\u4e0d\u4f1a\u7b49\u5f85\u4e0a\u4e00\u6b21\u4f5c\u4e1a\u6267\u884c\u5b8c\u6210\uff0c\u53ea\u8981\u89e6\u53d1\u65f6\u95f4\u5230\u4e86\u5c31\u81ea\u52a8\u6267\u884c\uff0c\u4f46\u4e00\u4e9b\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u53ef\u80fd\u5e0c\u671b\u7b49\u5f85\u4e0a\u4e00\u6b21\u4f5c\u4e1a\u5b8c\u6210\u518d\u6267\u884c\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:"services.AddSchedule(options =>\r\n{\r\n options.AddJob(concurrent: false, Triggers.Secondly()); // \u4e32\u884c\uff0c\u6bcf\u79d2\u6267\u884c\r\n});\n"})}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {12}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context.JobId} {context.TriggerId} {context.OccurrenceTime} {context.Trigger}");\r\n await Task.Delay(2000, stoppingToken); // \u8fd9\u91cc\u6a21\u62df\u8017\u65f6\u64cd\u4f5c\uff0c\u6bd4\u5982\u8017\u65f62\u79d2\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {6,8,12,14,16,18,20}",children:"info: 2022-12-02 17:23:27.3726863 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 17:23:27.3830366 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 17:23:27.9083148 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 17:23:27.9184699 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 17:23:27.9740028 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 17:23:28.0638789 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [S] * * * * * * 1ts 2022-12-02 17:23:28.000 -> 2022-12-02 17:23:29.000\r\nwarn: 2022-12-02 17:23:29.1119269 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #9\r\n 12/02/2022 17:23:29: The trigger of job failed to execute as scheduled due to blocking.\r\nwarn: 2022-12-02 17:23:30.0090551 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #9\r\n 12/02/2022 17:23:30: The trigger of job failed to execute as scheduled due to blocking.\r\ninfo: 2022-12-02 17:23:31.0121694 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [S] * * * * * * 2ts 2022-12-02 17:23:31.000 -> 2022-12-02 17:23:32.000\r\nwarn: 2022-12-02 17:23:32.0243646 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #9\r\n 12/02/2022 17:23:32: The trigger of job failed to execute as scheduled due to blocking.\n"})}),"\n",(0,s.jsxs)(r.admonition,{type:"caution",children:[(0,s.jsxs)(r.mdxAdmonitionTitle,{children:[(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c\u89c4\u5219\u8bf4\u660e"]}),(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c\u5982\u679c\u9047\u5230\u4e0a\u4e00\u6b21\u4f5c\u4e1a\u8fd8\u672a\u5b8c\u6210\u90a3\u4e48\u5b83\u4f1a\u7b49\u5230\u4e0b\u4e00\u6b21\u89e6\u53d1\u65f6\u95f4\u5230\u4e86\u518d\u6267\u884c\uff0c\u4ee5\u6b64\u91cd\u590d\u3002"]})]}),"\n",(0,s.jsxs)(r.p,{children:["\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4f7f\u7528 ",(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c\u4f46\u56e0\u4e3a\u8017\u65f6\u5bfc\u81f4",(0,s.jsx)(r.strong,{children:"\u89e6\u53d1\u65f6\u95f4\u5230\u4e86\u4f46\u5b9e\u9645\u672a\u80fd\u6267\u884c"}),"\u4f1a\u9ed8\u8ba4\u8f93\u51fa ",(0,s.jsx)(r.code,{children:"warn"})," \u8b66\u544a\u65e5\u5fd7\uff0c\u5982\u9700\u5173\u95ed\u53ea\u9700\u8981\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:"services.AddSchedule(options =>\r\n{\r\n options.LogEnabled = false;\r\n options.AddJob(concurrent: false, Triggers.Secondly()); // \u6bcf\u79d2\u6267\u884c\r\n});\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {2,4,6,8,10}",children:"info: 2022-12-02 17:27:13.1136450 +08:00 \u661f\u671f\u4e94 L MyJob[0] #12\r\n [S] * * * * * * 1ts 2022-12-02 17:27:13.000 -> 2022-12-02 17:27:14.000\r\ninfo: 2022-12-02 17:27:16.0092433 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n [S] * * * * * * 2ts 2022-12-02 17:27:16.000 -> 2022-12-02 17:27:17.000\r\ninfo: 2022-12-02 17:27:19.0092363 +08:00 \u661f\u671f\u4e94 L MyJob[0] #6\r\n [S] * * * * * * 3ts 2022-12-02 17:27:19.000 -> 2022-12-02 17:27:20.000\r\ninfo: 2022-12-02 17:27:22.0183594 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [S] * * * * * * 4ts 2022-12-02 17:27:22.000 -> 2022-12-02 17:27:23.000\r\ninfo: 2022-12-02 17:27:25.0152323 +08:00 \u661f\u671f\u4e94 L MyJob[0] #4\r\n [S] * * * * * * 5ts 2022-12-02 17:27:25.000 -> 2022-12-02 17:27:26.000\n"})}),"\n",(0,s.jsx)(r.h3,{id:"26124-\u6253\u5370\u4f5c\u4e1a\u5b8c\u6574\u4fe1\u606f",children:"26.1.2.4 \u6253\u5370\u4f5c\u4e1a\u5b8c\u6574\u4fe1\u606f"}),"\n",(0,s.jsx)(r.p,{children:"\u6846\u67b6\u63d0\u4f9b\u4e86\u56db\u79cd\u65b9\u5f0f\u6253\u5370\u4f5c\u4e1a\u5b8c\u6574\u4fe1\u606f\u3002"}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u7b2c\u4e00\u79cd\uff1a\u8f93\u51fa\u5b8c\u6574\u7684\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"JSON"})," \u4fe1\u606f\uff1a",(0,s.jsx)(r.code,{children:"context.ConvertToJSON()"})]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {11}",children:"public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation(context.ConvertToJSON());\r\n await Task.CompletedTask;\r\n }\r\n}\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6253\u5370\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-json",metastring:"showLineNumbers {3,14}",children:'info: 2022-12-02 18:00:59.4140802 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n {\r\n "jobDetail": {\r\n "jobId": "job1",\r\n "groupName": null,\r\n "jobType": "MyJob",\r\n "assemblyName": "ConsoleApp32",\r\n "description": null,\r\n "concurrent": true,\r\n "includeAnnotations": false,\r\n "properties": "{}",\r\n "updatedTime": "2022-12-02 18:00:59.390"\r\n },\r\n "trigger": {\r\n "triggerId": "job1_trigger1",\r\n "jobId": "job1",\r\n "triggerType": "Furion.Schedule.PeriodSecondsTrigger",\r\n "assemblyName": "Furion",\r\n "args": "[5]",\r\n "description": null,\r\n "status": 2,\r\n "startTime": null,\r\n "endTime": null,\r\n "lastRunTime": "2022-12-02 18:00:59.326",\r\n "nextRunTime": "2022-12-02 18:01:04.358",\r\n "numberOfRuns": 1,\r\n "maxNumberOfRuns": 0,\r\n "numberOfErrors": 0,\r\n "maxNumberOfErrors": 0,\r\n "numRetries": 0,\r\n "retryTimeout": 1000,\r\n "startNow": true,\r\n "runOnStart": false,\r\n "resetOnlyOnce": true,\r\n "result": null,\r\n "elapsedTime": 100,\r\n "updatedTime": "2022-12-02 18:00:59.390"\r\n }\r\n }\n'})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u7b2c\u4e8c\u79cd\uff1a\u8f93\u51fa\u5355\u72ec\u7684\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"JSON"})," \u4fe1\u606f\uff1a",(0,s.jsx)(r.code,{children:"jobDetail.ConvertToJSON()"})," \u6216 ",(0,s.jsx)(r.code,{children:"trigger.ConvertToJSON()"})]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {11-12}",children:"public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation(context.JobDetail.ConvertToJSON());\r\n _logger.LogInformation(context.Trigger.ConvertToJSON(NamingConventions.UnderScoreCase)); // \u652f\u6301\u4e09\u79cd\u5c5e\u6027\u540d\u8f93\u51fa\u89c4\u5219\r\n\r\n await Task.CompletedTask;\r\n }\r\n}\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6253\u5370\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-json",metastring:"showLineNumbers {2-12,14-37}",children:'info: 2022-12-02 18:02:10.7923360 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n {\r\n "jobId": "job1",\r\n "groupName": null,\r\n "jobType": "MyJob",\r\n "assemblyName": "ConsoleApp32",\r\n "description": null,\r\n "concurrent": true,\r\n "includeAnnotations": false,\r\n "properties": "{}",\r\n "updatedTime": "2022-12-02 18:02:10.774"\r\n }\r\ninfo: 2022-12-02 18:02:10.8008708 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n {\r\n "trigger_id": "job1_trigger1",\r\n "job_id": "job1",\r\n "trigger_type": "Furion.Schedule.PeriodSecondsTrigger",\r\n "assembly_name": "Furion",\r\n "args": "[5]",\r\n "description": null,\r\n "status": 2,\r\n "start_time": null,\r\n "end_time": null,\r\n "last_run_time": "2022-12-02 18:02:10.727",\r\n "next_run_time": "2022-12-02 18:02:15.733",\r\n "number_of_runs": 1,\r\n "max_number_of_runs": 0,\r\n "number_of_errors": 0,\r\n "max_number_of_errors": 0,\r\n "num_retries": 0,\r\n "retry_timeout": 1000,\r\n "start_now": true,\r\n "run_on_start": false,\r\n "reset_only_once": true,\r\n "result": null,\r\n "elapsed_time": 100,\r\n "updated_time": "2022-12-02 18:02:10.774"\r\n }\n'})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u7b2c\u4e09\u79cd\uff1a\u8f93\u51fa\u5355\u72ec\u7684\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"SQL"})," \u4fe1\u606f\uff1a",(0,s.jsx)(r.code,{children:"jobDetail.ConvertToSQL()"})," \u6216 ",(0,s.jsx)(r.code,{children:"trigger.ConvertToSQL()"})]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {11-12,14-16}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n var jobDetail = context.JobDetail;\r\n var trigger = context.Trigger;\r\n\r\n _logger.LogInformation(jobDetail.ConvertToSQL("\u4f5c\u4e1a\u4fe1\u606f\u8868\u540d", PersistenceBehavior.Appended)); // \u8f93\u51fa\u65b0\u589e\u8bed\u53e5\r\n _logger.LogInformation(trigger.ConvertToSQL("\u4f5c\u4e1a\u89e6\u53d1\u5668\u8868\u540d", PersistenceBehavior.Removed, NamingConventions.Pascal)); // \u8f93\u51fa\u5220\u9664\u8bed\u53e5\r\n _logger.LogInformation(trigger.ConvertToSQL("\u4f5c\u4e1a\u89e6\u53d1\u5668\u8868\u540d", PersistenceBehavior.Updated, NamingConventions.UnderScoreCase)); // \u8f93\u51fa\u66f4\u65b0\u8bed\u53e5\r\n\r\n await Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6253\u5370\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-sql",metastring:"showLineNumbers {2,25,28}",children:"info: 2022-12-02 18:03:11.8543760 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n INSERT INTO \u4f5c\u4e1a\u4fe1\u606f\u8868\u540d(\r\n jobId,\r\n groupName,\r\n jobType,\r\n assemblyName,\r\n description,\r\n concurrent,\r\n includeAnnotations,\r\n properties,\r\n updatedTime\r\n )\r\n VALUES(\r\n 'job1',\r\n NULL,\r\n 'MyJob',\r\n 'ConsoleApp32',\r\n NULL,\r\n 1,\r\n 0,\r\n '{}',\r\n '2022-12-02 18:03:11.836'\r\n );\r\ninfo: 2022-12-02 18:03:11.8636268 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n DELETE FROM \u4f5c\u4e1a\u89e6\u53d1\u5668\u8868\u540d\r\n WHERE TriggerId = 'job1_trigger1' AND JobId = 'job1';\r\ninfo: 2022-12-02 18:03:11.8669134 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n UPDATE \u4f5c\u4e1a\u89e6\u53d1\u5668\u8868\u540d\r\n SET\r\n trigger_id = 'job1_trigger1',\r\n job_id = 'job1',\r\n trigger_type = 'Furion.Schedule.PeriodSecondsTrigger',\r\n assembly_name = 'Furion',\r\n args = '[5]',\r\n description = NULL,\r\n status = 2,\r\n start_time = NULL,\r\n end_time = NULL,\r\n last_run_time = '2022-12-02 18:03:11.778',\r\n next_run_time = '2022-12-02 18:03:16.794',\r\n number_of_runs = 1,\r\n max_number_of_runs = 0,\r\n number_of_errors = 0,\r\n max_number_of_errors = 0,\r\n num_retries = 0,\r\n retry_timeout = 1000,\r\n start_now = 1,\r\n run_on_start = 0,\r\n reset_only_once = 1,\r\n result = NULL,\r\n elapsed_time = 100,\r\n updated_time = '2022-12-02 18:03:11.836'\r\n WHERE trigger_id = 'job1_trigger1' AND job_id = 'job1';\n"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u7b2c\u56db\u79cd\uff1a\u8f93\u51fa\u5355\u72ec\u7684\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Monitor"})," \u4fe1\u606f\uff1a",(0,s.jsx)(r.code,{children:"jobDetail.ConvertToMonitor()"})," \u6216 ",(0,s.jsx)(r.code,{children:"trigger.ConvertToMonitor()"})]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {11-12}",children:"public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation(context.JobDetail.ConvertToMonitor());\r\n _logger.LogInformation(context.Trigger.ConvertToMonitor());\r\n\r\n await Task.CompletedTask;\r\n }\r\n}\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6253\u5370\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {2,16}",children:"info: 2022-12-02 18:04:06.2833095 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n \u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 JobDetail \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\r\n \u2523 MyJob\r\n \u2523\r\n \u2523 jobId\uff1a job1\r\n \u2523 groupName\uff1a\r\n \u2523 jobType\uff1a MyJob\r\n \u2523 assemblyName\uff1a ConsoleApp32\r\n \u2523 description\uff1a\r\n \u2523 concurrent\uff1a True\r\n \u2523 includeAnnotations\uff1a False\r\n \u2523 properties\uff1a {}\r\n \u2523 updatedTime\uff1a 2022-12-02 18:04:06.254\r\n \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 JobDetail \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\r\ninfo: 2022-12-02 18:04:06.2868205 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n \u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 Trigger \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\r\n \u2523 Furion.Schedule.PeriodSecondsTrigger\r\n \u2523\r\n \u2523 triggerId\uff1a job1_trigger1\r\n \u2523 jobId\uff1a job1\r\n \u2523 triggerType\uff1a Furion.Schedule.PeriodSecondsTrigger\r\n \u2523 assemblyName\uff1a Furion\r\n \u2523 args\uff1a [5]\r\n \u2523 description\uff1a\r\n \u2523 status\uff1a Running\r\n \u2523 startTime\uff1a\r\n \u2523 endTime\uff1a\r\n \u2523 lastRunTime\uff1a 2022-12-02 18:04:06.189\r\n \u2523 nextRunTime\uff1a 2022-12-02 18:04:11.212\r\n \u2523 numberOfRuns\uff1a 1\r\n \u2523 maxNumberOfRuns\uff1a 0\r\n \u2523 numberOfErrors\uff1a 0\r\n \u2523 maxNumberOfErrors\uff1a 0\r\n \u2523 numRetries\uff1a 0\r\n \u2523 retryTimeout\uff1a 1000\r\n \u2523 startNow\uff1a True\r\n \u2523 runOnStart\uff1a False\r\n \u2523 resetOnlyOnce\uff1a True\r\n \u2523 result\uff1a\r\n \u2523 elapsedTime\uff1a 100\r\n \u2523 updatedTime\uff1a 2022-12-02 18:04:06.254\r\n \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 Trigger \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n"})}),"\n",(0,s.jsx)(r.h3,{id:"26125-\u8fd0\u884c\u65f6\u52a8\u6001\u64cd\u4f5c\u4f5c\u4e1a",children:"26.1.2.5 \u8fd0\u884c\u65f6\uff08\u52a8\u6001\uff09\u64cd\u4f5c\u4f5c\u4e1a"}),"\n",(0,s.jsx)(r.p,{children:"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u5728\u8fd0\u884c\u65f6\u5bf9\u4f5c\u4e1a\u52a8\u6001\u7684\u589e\u52a0\uff0c\u66f4\u65b0\uff0c\u5220\u9664\u7b49\u64cd\u4f5c\uff0c\u5982\u52a8\u6001\u6dfb\u52a0\u4f5c\u4e1a\uff1a"}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsxs)(r.li,{children:["\u6ce8\u518c ",(0,s.jsx)(r.code,{children:"services.AddSchedule()"})," \u670d\u52a1"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,5}",children:"// \u53ef\u4ee5\u5b8c\u5168\u52a8\u6001\u64cd\u4f5c\uff0c\u53ea\u9700\u8981\u6ce8\u518c\u670d\u52a1\u5373\u53ef\r\nservices.AddSchedule();\r\n\r\n// \u4e5f\u53ef\u4ee5\u90e8\u5206\u9759\u6001\uff0c\u90e8\u5206\u52a8\u6001\u6ce8\u518c\r\nservices.AddSchedule(options =>\r\n{\r\n options.AddJob(concurrent: false, Triggers.PeriodSeconds(5));\r\n});\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsxs)(r.li,{children:["\u6ce8\u5165 ",(0,s.jsx)(r.code,{children:"ISchedulerFactory"})," \u670d\u52a1"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {4,11}",children:'public class YourService: IYourService\r\n{\r\n private readonly ISchedulerFactory _schedulerFactory;\r\n public YourService(ISchedulerFactory schedulerFactory)\r\n {\r\n _schedulerFactory = schedulerFactory;\r\n }\r\n\r\n public void AddJob()\r\n {\r\n _schedulerFactory.AddJob("\u52a8\u6001\u4f5c\u4e1a Id", Triggers.Secondly());\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"3",children:["\n",(0,s.jsx)(r.li,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c"}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,12,14,16,18,22,24}",children:"info: 2022-12-02 18:07:33.7799062 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 18:07:33.7971487 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 18:07:33.8751390 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 18:07:33.8805159 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 18:07:33.9013656 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 18:07:38.9241031 +08:00 \u661f\u671f\u4e94 L MyJob[0] #9\r\n [C] 5s 1ts 2022-12-02 18:07:38.813 -> 2022-12-02 18:07:43.863\r\ninfo: 2022-12-02 18:07:43.0865787 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #16\r\n The <\u52a8\u6001\u4f5c\u4e1a Id_trigger1> trigger for scheduler of <\u52a8\u6001\u4f5c\u4e1a Id> successfully appended to the schedule.\r\nwarn: 2022-12-02 18:07:43.0894163 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #16\r\n Schedule hosted service cancels hibernation and GC.Collect().\r\ninfo: 2022-12-02 18:07:43.1129824 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #16\r\n The scheduler of <\u52a8\u6001\u4f5c\u4e1a Id> successfully appended to the schedule.\r\ninfo: 2022-12-02 18:07:43.8810686 +08:00 \u661f\u671f\u4e94 L MyJob[0] #17\r\n [C] 5s 2ts 2022-12-02 18:07:43.863 -> 2022-12-02 18:07:48.848\r\ninfo: 2022-12-02 18:07:44.0104025 +08:00 \u661f\u671f\u4e94 L MyJob[0] #16\r\n <\u52a8\u6001\u4f5c\u4e1a Id> [C] <\u52a8\u6001\u4f5c\u4e1a Id \u52a8\u6001\u4f5c\u4e1a Id_trigger1> * * * * * * 1ts 2022-12-02 18:07:44.000 -> 2022-12-02 18:07:45.000\r\ninfo: 2022-12-02 18:07:45.0092441 +08:00 \u661f\u671f\u4e94 L MyJob[0] #8\r\n <\u52a8\u6001\u4f5c\u4e1a Id> [C] <\u52a8\u6001\u4f5c\u4e1a Id \u52a8\u6001\u4f5c\u4e1a Id_trigger1> * * * * * * 2ts 2022-12-02 18:07:45.000 -> 2022-12-02 18:07:46.000\n"})}),"\n",(0,s.jsx)(r.h3,{id:"26126-\u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027",children:"26.1.2.6 \u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027"}),"\n",(0,s.jsxs)(r.p,{children:["\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6846\u67b6\u4e0d\u4f1a\u626b\u63cf ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b\u7684\u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027\uff0c\u4f46\u53ef\u4ee5\u8bbe\u7f6e\u4f5c\u4e1a\u7684 ",(0,s.jsx)(r.code,{children:"IncludeAnnotations"})," \u8fdb\u884c\u542f\u7528\u3002"]}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsxs)(r.li,{children:["\u542f\u7528 ",(0,s.jsx)(r.code,{children:"IncludeAnnotations"})," \u626b\u63cf"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3,7,10}",children:"services.AddSchedule(options =>\r\n{\r\n options.AddJob(JobBuilder.Create().SetIncludeAnnotations(true)\r\n , Triggers.PeriodSeconds(5)); // \u8fd9\u91cc\u53ef\u4f20\u53ef\u4e0d\u4f20\uff0c\u4f20\u4e86\u5219\u4f1a\u81ea\u52a8\u8f7d\u5165\u7279\u6027\u548c\u8fd9\u91cc\u914d\u7f6e\u7684\u4f5c\u4e1a\u89e6\u53d1\u5668\r\n\r\n // \u8fd8\u53ef\u4ee5\u66f4\u7b80\u5355~~\r\n options.AddJob(typeof(MyJob).ScanToBuilder());\r\n\r\n // \u8fd8\u53ef\u4ee5\u6279\u91cf\u65b0\u589e Furion 4.8.2.4+\r\n options.AddJob(App.EffectiveTypes.ScanToBuilders());\r\n});\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsxs)(r.li,{children:["\u5728 ",(0,s.jsx)(r.code,{children:"MyJob"})," \u4e2d\u6dfb\u52a0\u591a\u4e2a\u4f5c\u4e1a\u89e6\u53d1\u5668\u7279\u6027"]}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1-2}",children:'[Minutely]\r\n[Cron("3,7,8 * * * * ?", CronStringFormat.WithSeconds)]\r\npublic class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context}");\r\n await Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"3",children:["\n",(0,s.jsx)(r.li,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c"}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,10,12,16,18,20,24,26}",children:"info: 2022-12-02 18:12:56.4199663 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-02 18:12:56.4287962 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-02 18:12:56.6149505 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 18:12:56.6205117 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 18:12:56.6266132 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-02 18:12:56.6291006 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-02 18:12:56.6454334 +08:00 \u661f\u671f\u4e94 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-02 18:13:00.0842828 +08:00 \u661f\u671f\u4e94 L MyJob[0] #15\r\n [C] * * * * * 1ts 2022-12-02 18:13:00.000 -> 2022-12-02 18:14:00.000\r\ninfo: 2022-12-02 18:13:01.5260220 +08:00 \u661f\u671f\u4e94 L MyJob[0] #16\r\n [C] 5s 1ts 2022-12-02 18:13:01.494 -> 2022-12-02 18:13:06.492\r\ninfo: 2022-12-02 18:13:03.0076111 +08:00 \u661f\u671f\u4e94 L MyJob[0] #6\r\n [C] 3,7,8 * * * * ? 1ts 2022-12-02 18:13:03.000 -> 2022-12-02 18:13:07.000\r\ninfo: 2022-12-02 18:13:06.4954400 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n [C] 5s 2ts 2022-12-02 18:13:06.492 -> 2022-12-02 18:13:11.463\r\ninfo: 2022-12-02 18:13:07.0180453 +08:00 \u661f\u671f\u4e94 L MyJob[0] #6\r\n [C] 3,7,8 * * * * ? 2ts 2022-12-02 18:13:07.000 -> 2022-12-02 18:13:08.000\r\ninfo: 2022-12-02 18:13:08.0114292 +08:00 \u661f\u671f\u4e94 L MyJob[0] #13\r\n [C] 3,7,8 * * * * ? 3ts 2022-12-02 18:13:08.000 -> 2022-12-02 18:14:03.000\r\ninfo: 2022-12-02 18:13:11.4774564 +08:00 \u661f\u671f\u4e94 L MyJob[0] #16\r\n [C] 5s 3ts 2022-12-02 18:13:11.463 -> 2022-12-02 18:13:16.445\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26127-http-\u8bf7\u6c42\u4f5c\u4e1a",children:["26.1.2.7 ",(0,s.jsx)(r.code,{children:"HTTP"})," \u8bf7\u6c42\u4f5c\u4e1a"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.7.7 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"HTTP"})," \u8bf7\u6c42\u4f5c\u4e1a\u901a\u5e38\u7528\u4e8e\u5b9a\u65f6\u8bf7\u6c42/\u8bbf\u95ee\u4e92\u8054\u7f51\u5730\u5740\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:'services.AddSchedule(options =>\r\n{\r\n options.AddHttpJob(request =>\r\n {\r\n request.RequestUri = "https://www.chinadot.net";\r\n request.HttpMethod = HttpMethod.Get;\r\n // request.Body = "{}"; // \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u4f53\r\n // request.Headers.Add("framework", "Furion"); // Furion 4.8.8.46+ \u652f\u6301\r\n // request.GroupName = "group"; // Furion 4.8.8.46+ \u652f\u6301\r\n // request.Description = "\u4f5c\u4e1a\u8bf7\u6c42\u63cf\u8ff0"; // Furion 4.8.8.46+ \u652f\u6301\r\n }, Triggers.PeriodSeconds(5));\r\n});\n'})}),"\n",(0,s.jsxs)(r.admonition,{type:"important",children:[(0,s.jsxs)(r.mdxAdmonitionTitle,{children:[(0,s.jsx)(r.code,{children:"System.Net.Http.IHttpClientFactory"})," \u9519\u8bef"]}),(0,s.jsxs)(r.p,{children:["\u5982\u9047 ",(0,s.jsx)(r.code,{children:"Unable to resolve service for type 'System.Net.Http.IHttpClientFactory' while attempting to activate 'Furion.Schedule.HttpJob'."})," \u9519\u8bef\uff0c\u8bf7\u5148\u6ce8\u518c ",(0,s.jsx)(r.code,{children:"servces.AddHttpClient()"})," \u670d\u52a1\u3002"]})]}),"\n",(0,s.jsx)(r.p,{children:"\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {13-26}",children:"info: 2023-03-11 11:05:36.3616747 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2023-03-11 11:05:36.3652411 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2023-03-11 11:05:36.5172940 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-03-11 11:05:36.5189296 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2023-03-11 11:05:36.5347816 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\nwarn: 2023-03-11 11:05:41.5228138 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #15\r\n Schedule hosted service will sleep <4970> milliseconds and be waked up at <2023-03-11 11:05:46.486>.\r\ninfo: 2023-03-11 11:05:41.5542865 +08:00 \u661f\u671f\u516d L System.Net.Http.HttpClient.HttpJob.LogicalHandler[100] #9\r\n Start processing HTTP request GET https://www.chinadot.net/\r\ninfo: 2023-03-11 11:05:41.5589056 +08:00 \u661f\u671f\u516d L System.Net.Http.HttpClient.HttpJob.ClientHandler[100] #9\r\n Sending HTTP request GET https://www.chinadot.net/\r\ninfo: 2023-03-11 11:05:44.1305461 +08:00 \u661f\u671f\u516d L System.Net.Http.HttpClient.HttpJob.ClientHandler[101] #8\r\n Received HTTP response headers after 2566.7836ms - 200\r\ninfo: 2023-03-11 11:05:44.1343977 +08:00 \u661f\u671f\u516d L System.Net.Http.HttpClient.HttpJob.LogicalHandler[101] #8\r\n End processing HTTP request after 2584.2327ms - 200\r\ninfo: 2023-03-11 11:05:48.6475959 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #4\r\n Received HTTP response body with a length of <63639> output as follows - 200\r\n \r\n dotNET China | \u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\r\n ......\r\n \n"})}),"\n",(0,s.jsx)(r.h3,{id:"26128-\u59d4\u6258\u65b9\u5f0f\u4f5c\u4e1a",children:"26.1.2.8 \u59d4\u6258\u65b9\u5f0f\u4f5c\u4e1a"}),"\n",(0,s.jsxs)(r.p,{children:["\u6709\u65f6\u6211\u4eec\u9700\u8981\u5feb\u901f\u5f00\u542f\u65b0\u7684\u5b9a\u65f6\u4f5c\u4e1a",(0,s.jsx)(r.strong,{children:"\u4f46\u4e0d\u8003\u8651\u540e\u7eed\u6301\u4e45\u5316\u5b58\u50a8\uff08\u5982\u6570\u636e\u5e93\u5b58\u50a8\uff09"}),"\uff0c\u8fd9\u65f6\u53ef\u4ee5\u4f7f\u7528\u59d4\u6258\u4f5c\u4e1a\u65b9\u5f0f\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3-7}",children:'services.AddSchedule(options =>\r\n{\r\n // \u548c IJob \u7684 ExecuteAsync \u65b9\u6cd5\u7b7e\u540d\u4e00\u81f4\r\n options.AddJob((context, stoppingToken) =>\r\n {\r\n // \u53ef\u901a\u8fc7 context.ServiceProvider \u89e3\u6790\u670d\u52a1\uff1b\u6846\u67b6\u63d0\u4f9b\u4e86 .GetLogger() \u62d3\u5c55\u65b9\u6cd5\u8f93\u51fa\u65e5\u5fd7\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }, Triggers.PeriodSeconds(5));\r\n});\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,12,14}",children:"info: 2023-03-21 14:22:34.1910781 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2023-03-21 14:22:34.1967420 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2023-03-21 14:22:34.6163320 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-03-21 14:22:34.6195112 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2023-03-21 14:22:34.6398162 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2023-03-21 14:22:39.7171392 +08:00 \u661f\u671f\u4e8c L System.Logging.DynamicJob[0] #9\r\n [C] 5s 1ts 2023-03-21 14:22:39.575 -> 2023-03-21 14:22:44.623\r\ninfo: 2023-03-21 14:22:44.6986483 +08:00 \u661f\u671f\u4e8c L System.Logging.DynamicJob[0] #9\r\n [C] 5s 2ts 2023-03-21 14:22:44.623 -> 2023-03-21 14:22:49.657\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26129-\u975e-iocdi-\u9879\u76ee\u4e2d\u4f7f\u7528",children:["26.1.2.9 \u975e ",(0,s.jsx)(r.code,{children:"IOC/DI"})," \u9879\u76ee\u4e2d\u4f7f\u7528"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.8.5 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:["\u5728\u4e00\u4e9b\u4e0d\u652f\u6301\u4f9d\u8d56\u6ce8\u5165\u7684\u9879\u76ee\u7c7b\u578b\u5982 ",(0,s.jsx)(r.code,{children:"Console\u3001WinForm\u3001WPF"})," \u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u4f7f\u7528\uff1a"]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:"\u65b9\u5f0f\u4e00\uff1a\u65e0\u9700\u83b7\u53d6\u5176\u4ed6\u670d\u52a1\u5bf9\u8c61"}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,2,6-7}",children:"_ = new ServiceCollection()\r\n .AddSchedule(options =>\r\n {\r\n options.AddJob(Triggers.Period(5000));\r\n })\r\n .GetScheduleHostedService()\r\n .StartAsync(new CancellationTokenSource().Token);\n"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:"\u65b9\u5f0f\u4e8c\uff1a\u9700\u8981\u540e\u7eed\u89e3\u6790\u670d\u52a1"}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,7,10-11,14}",children:"// \u6ce8\u518c\u670d\u52a1\u5e76\u6784\u5efa\r\nIServiceProvider services = new ServiceCollection()\r\n .AddSchedule(options =>\r\n {\r\n options.AddJob(Triggers.Period(5000));\r\n })\r\n .BuildServiceProvider();\r\n\r\n// \u542f\u52a8\u4f5c\u4e1a\u8c03\u5ea6\u4e3b\u673a\u670d\u52a1\r\nservices.GetScheduleHostedService()\r\n .StartAsync(new CancellationTokenSource().Token);\r\n\r\n// \u89e3\u6790\u4f5c\u4e1a\u8ba1\u5212\u5de5\u5382\r\nvar schedulerFactory = services.GetService();\n"})}),"\n",(0,s.jsxs)(r.admonition,{title:"\u5c0f\u77e5\u8bc6",type:"tip",children:[(0,s.jsxs)(r.p,{children:["\u53ea\u9700\u8981\u5c06 ",(0,s.jsx)(r.code,{children:"services"})," \u5bf9\u8c61\u7528\u7c7b\u7684\u9759\u6001\u5c5e\u6027\u5b58\u50a8\u8d77\u6765\u5373\u53ef\uff0c\u5982\uff1a"]}),(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:"public class DI\r\n{\r\n public static IServiceProvider Services {get; set;}\r\n}\n"})}),(0,s.jsxs)(r.p,{children:["\u4e4b\u540e\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"DI.Services = services;"})," \u5373\u53ef\uff0c\u540e\u7eed\u4fbf\u53ef\u4ee5\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"DI.Services.GetService()"})," \u89e3\u6790\u670d\u52a1\u3002"]})]}),"\n",(0,s.jsxs)(r.h2,{id:"2613-\u4f5c\u4e1a\u4fe1\u606f-jobdetail-\u53ca\u6784\u5efa\u5668",children:["26.1.3 \u4f5c\u4e1a\u4fe1\u606f ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u53ca\u6784\u5efa\u5668"]}),"\n",(0,s.jsx)(r.h3,{id:"26131-\u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f",children:"26.1.3.1 \u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f"}),"\n",(0,s.jsxs)(r.p,{children:["\u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u7c7b\u578b\u6765\u63cf\u8ff0\u4f5c\u4e1a\u4fe1\u606f\uff0c",(0,s.jsx)(r.code,{children:"JobDetail"})," \u7c7b\u578b\u63d0\u4f9b\u4ee5\u4e0b",(0,s.jsx)(r.strong,{children:"\u53ea\u8bfb\u5c5e\u6027"}),"\uff1a"]}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"\u5c5e\u6027\u540d"}),(0,s.jsx)(r.th,{children:"\u5c5e\u6027\u7c7b\u578b"}),(0,s.jsx)(r.th,{children:"\u9ed8\u8ba4\u503c"}),(0,s.jsx)(r.th,{children:"\u8bf4\u660e"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"JobId"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{}),(0,s.jsxs)(r.td,{children:["\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Id"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"GroupName"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{}),(0,s.jsx)(r.td,{children:"\u4f5c\u4e1a\u7ec4\u540d\u79f0"})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"JobType"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{}),(0,s.jsxs)(r.td,{children:["\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u7c7b\u578b\uff0c\u5b58\u50a8\u7684\u662f\u7c7b\u578b\u7684 ",(0,s.jsx)(r.code,{children:"FullName"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"AssemblyName"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{}),(0,s.jsxs)(r.td,{children:["\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u7c7b\u578b\u6240\u5728\u7a0b\u5e8f\u96c6\uff0c\u5b58\u50a8\u7684\u662f\u7a0b\u5e8f\u96c6 ",(0,s.jsx)(r.code,{children:"Name"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"Description"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{}),(0,s.jsx)(r.td,{children:"\u63cf\u8ff0\u4fe1\u606f"})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"Concurrent"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"bool"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"true"})}),(0,s.jsxs)(r.td,{children:["\u4f5c\u4e1a\u6267\u884c\u65b9\u5f0f\uff0c\u5982\u679c\u8bbe\u7f6e\u4e3a ",(0,s.jsx)(r.code,{children:"false"}),"\uff0c\u90a3\u4e48\u4f7f\u7528 ",(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c\uff0c\u5426\u5219 ",(0,s.jsx)(r.code,{children:"\u5e76\u884c"})," \u6267\u884c"]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"IncludeAnnotations"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"bool"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"false"})}),(0,s.jsxs)(r.td,{children:["\u662f\u5426\u626b\u63cf ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b ",(0,s.jsx)(r.code,{children:"[Trigger]"})," \u7279\u6027\u89e6\u53d1\u5668"]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"Properties"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"string"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:'"{}"'})}),(0,s.jsxs)(r.td,{children:["\u4f5c\u4e1a\u4fe1\u606f\u989d\u5916\u6570\u636e\uff0c\u7531 ",(0,s.jsx)(r.code,{children:"Dictionary"})," \u5e8f\u5217\u5316\u6210\u5b57\u7b26\u4e32\u5b58\u50a8"]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"UpdatedTime"})}),(0,s.jsx)(r.td,{children:(0,s.jsx)(r.code,{children:"DateTime?"})}),(0,s.jsx)(r.td,{}),(0,s.jsx)(r.td,{children:"\u4f5c\u4e1a\u66f4\u65b0\u65f6\u95f4"})]})]})]}),"\n",(0,s.jsx)(r.h3,{id:"26132-\u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",children:"26.1.3.2 \u5173\u4e8e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668"}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u4fe1\u606f ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u662f\u4f5c\u4e1a\u8c03\u5ea6\u6a21\u5757\u63d0\u4f9b\u8fd0\u884c\u65f6\u7684",(0,s.jsx)(r.strong,{children:"\u53ea\u8bfb\u7c7b\u578b"}),"\uff0c\u90a3\u4e48\u6211\u4eec\u8be5\u5982\u4f55\u521b\u5efa\u6216\u53d8\u66f4 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u5bf9\u8c61\u5462\uff1f"]}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"JobBuilder"})," \u662f\u4f5c\u4e1a\u8c03\u5ea6\u6a21\u5757\u63d0\u4f9b\u53ef\u7528\u6765\u751f\u6210\u8fd0\u884c\u65f6 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u7684\u7c7b\u578b\uff0c\u8fd9\u6837\u505a\u7684\u597d\u5904\u53ef\u907f\u514d\u5916\u90e8\u76f4\u63a5\u4fee\u6539\u8fd0\u884c\u65f6 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u6570\u636e\uff0c\u8fd8\u80fd\u5b9e\u73b0\u4efb\u4f55\u4fee\u6539\u52a8\u4f5c\u76d1\u542c\uff0c\u4e5f\u80fd\u907f\u514d\u591a\u7ebf\u7a0b\u62a2\u5360\u60c5\u51b5\u3002"]}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u8c03\u5ea6\u6a21\u5757\u63d0\u4f9b\u4e86\u591a\u79cd\u65b9\u5f0f\u7528\u6765\u521b\u5efa ",(0,s.jsx)(r.code,{children:"JobBuilder"})," \u5bf9\u8c61\u3002"]}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"Create"})," \u9759\u6001\u65b9\u6cd5\u521b\u5efa"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,5,8,11,14}",children:'// \u6839\u636e\u4f5c\u4e1a Id \u521b\u5efa\r\nvar jobBuilder = JobBuilder.Create("job1");\r\n\r\n// \u6839\u636e IJob \u5b9e\u73b0\u7c7b\u7c7b\u578b\u521b\u5efa\r\nvar jobBuilder = JobBuilder.Create();\r\n\r\n// \u6839\u636e\u7a0b\u5e8f\u96c6\u540d\u79f0\u548c\u7c7b\u578b\u5b8c\u5168\u9650\u5b9a\u540d\uff08FullName\uff09\u521b\u5efa\r\nvar jobBuilder = JobBuilder.Create("YourProject", "YourProject.MyJob");\r\n\r\n// \u6839\u636e Type \u7c7b\u578b\u521b\u5efa\r\nvar jobBuilder = JobBuilder.Create(typeof(MyJob));\r\n\r\n// \u901a\u8fc7\u59d4\u6258\u521b\u5efa\u52a8\u6001\u4f5c\u4e1a\r\nvar jobBuilder = JobBuilder.Create((context, stoppingToken) =>\r\n{\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n});\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u7c7b\u578b\u521b\u5efa"]})}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"\u8fd9\u79cd\u65b9\u5f0f\u5e38\u7528\u4e8e\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\u4f5c\u4e1a\u4fe1\u606f\u3002"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var jobBuilder = JobBuilder.From(jobDetail);\r\n\r\n//\u4e5f\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\r\nvar jobBuilder = jobDetail.GetBuilder();\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"3",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"JSON"})," \u5b57\u7b26\u4e32\u521b\u5efa"]})}),"\n"]}),"\n",(0,s.jsxs)(r.p,{children:["\u8be5\u65b9\u5f0f\u975e\u5e38\u7075\u6d3b\uff0c\u53ef\u4ece\u914d\u7f6e\u6587\u4ef6\uff0c",(0,s.jsx)(r.code,{children:"JSON"})," \u5b57\u7b26\u4e32\uff0c\u6216\u5176\u4ed6\u80fd\u591f\u8fd4\u56de ",(0,s.jsx)(r.code,{children:"JSON"})," \u5b57\u7b26\u4e32\u7684\u5730\u65b9\u521b\u5efa\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2-12}",children:'var jobBuilder = JobBuilder.From(@"{\r\n\t""jobId"": ""job1"",\r\n\t""groupName"": null,\r\n\t""jobType"": ""MyJob"",\r\n\t""assemblyName"": ""ConsoleApp13"",\r\n\t""description"": null,\r\n\t""concurrent"": true,\r\n\t""includeAnnotations"": false,\r\n\t""properties"": ""{}"",\r\n\t""updatedTime"": null\r\n}");\n'})}),"\n",(0,s.jsxs)(r.p,{children:["\u5982\u679c\u4f7f\u7528\u7684\u662f ",(0,s.jsx)(r.code,{children:".NET7"}),"\uff0c\u53ef\u4f7f\u7528 ",(0,s.jsx)(r.code,{children:'"""'})," \u907f\u514d\u8f6c\u4e49\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2-12}",children:'var jobBuilder = JobBuilder.From("""\r\n{\r\n\t"jobId": "job1",\r\n\t"groupName": null,\r\n\t"jobType": "MyJob",\r\n\t"assemblyName": "ConsoleApp13",\r\n\t"description": null,\r\n\t"concurrent": true,\r\n\t"includeAnnotations": false,\r\n\t"properties": "{}",\r\n\t"updatedTime": "2022-12-02 18:00:59.390"\r\n}\r\n""");\n'})}),"\n",(0,s.jsxs)(r.admonition,{title:"\u5173\u4e8e\u5c5e\u6027\u540d\u5339\u914d\u89c4\u5219",type:"important",children:[(0,s.jsxs)(r.p,{children:["\u652f\u6301 ",(0,s.jsx)(r.code,{children:"CamelCase\uff08\u9a7c\u5cf0\u547d\u540d\u6cd5\uff09"}),"\uff0c",(0,s.jsx)(r.code,{children:"Pascal\uff08\u5e15\u65af\u5361\u547d\u540d\u6cd5\uff09"})," \u547d\u540d\u65b9\u5f0f\u3002"]}),(0,s.jsxs)(r.p,{children:[(0,s.jsxs)(r.strong,{children:["\u4e0d\u652f\u6301 ",(0,s.jsx)(r.code,{children:"UnderScoreCase\uff08\u4e0b\u5212\u7ebf\u547d\u540d\u6cd5\uff09"})]})," \uff0c\u5982 ",(0,s.jsx)(r.code,{children:'"include_annotations": true'})]})]}),"\n",(0,s.jsxs)(r.ol,{start:"4",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u8fd8\u53ef\u4ee5\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"Clone"})," \u9759\u6001\u65b9\u6cd5\u4ece\u4e00\u4e2a ",(0,s.jsx)(r.code,{children:"JobBuilder"})," \u521b\u5efa"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var jobBuilder = JobBuilder.Clone(fromJobBuilder);\n"})}),"\n",(0,s.jsxs)(r.admonition,{title:"\u514b\u9686\u8bf4\u660e",type:"important",children:[(0,s.jsxs)(r.p,{children:["\u514b\u9686\u64cd\u4f5c\u53ea\u4f1a\u514b\u9686 ",(0,s.jsx)(r.code,{children:"AssemblyName"}),"\uff0c",(0,s.jsx)(r.code,{children:"JobType"}),"\uff0c",(0,s.jsx)(r.code,{children:"GroupName"}),"\uff0c",(0,s.jsx)(r.code,{children:"Description"}),"\uff0c",(0,s.jsx)(r.code,{children:"Concurrent"}),"\uff0c",(0,s.jsx)(r.code,{children:"IncludeAnnotations"}),"\uff0c",(0,s.jsx)(r.code,{children:"Properties"}),"\uff0c",(0,s.jsx)(r.code,{children:"DynamicExecuteAsync"}),"\uff08\u52a8\u6001\u4f5c\u4e1a\uff09\u3002"]}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u4e0d\u4f1a\u514b\u9686 ",(0,s.jsx)(r.code,{children:"JobId"}),"\uff0c",(0,s.jsx)(r.code,{children:"UpdatedTime"}),"\u3002"]})}),"\n"]})]}),"\n",(0,s.jsxs)(r.ol,{start:"5",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u8fd8\u53ef\u4ee5\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"LoadFrom"})," \u5b9e\u4f8b\u65b9\u6cd5\u586b\u5145\u5f53\u524d\u7684 ",(0,s.jsx)(r.code,{children:"JobBuilder"})]})}),"\n"]}),"\n",(0,s.jsxs)(r.p,{children:["\u6bd4\u5982\u53ef\u4ee5\u4f20\u9012\u533f\u540d\u7c7b\u578b\uff0c\u7c7b\u7c7b\u578b\uff0c\u5b57\u5178 ",(0,s.jsx)(r.code,{children:"Dictionary"})," \u7c7b\u578b\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,9,14,17,22,25}",children:'// \u4f1a\u8986\u76d6\u6240\u6709\u76f8\u540c\u7684\u503c\r\njobBuilder.LoadFrom(new\r\n{\r\n Description = "\u6211\u662f\u63cf\u8ff0",\r\n Concurrent = false\r\n});\r\n\r\n// \u652f\u6301\u591a\u4e2a\u586b\u5145\uff0c\u8fd8\u53ef\u4ee5\u914d\u7f6e\u8df3\u8fc7 null \u503c\u8986\u76d6\r\njobBuilder.LoadFrom(new\r\n{\r\n Description = "\u6211\u662f\u53e6\u5916\u4e00\u4e2a\u63cf\u8ff0",\r\n Concurrent = false,\r\n IncludeAnnotations = default(object) // \u4f1a\u8df3\u8fc7\u8d4b\u503c\r\n}, ignoreNullValue: true);\r\n\r\n// \u652f\u6301\u5ffd\u7565\u7279\u5b9a\u5c5e\u6027\u540d\u6620\u5c04\r\njobBuilder.LoadFrom(new\r\n{\r\n Description = "\u6211\u662f\u53e6\u5916\u4e00\u4e2a\u63cf\u8ff0",\r\n Concurrent = false,\r\n IncludeAnnotations = default(object) // \u4f1a\u8df3\u8fc7\u8d4b\u503c\r\n}, ignorePropertyNames: new[]{ "description" });\r\n\r\n// \u652f\u6301\u5b57\u5178\u7c7b\u578b\r\njobBuilder.LoadFrom(new Dictionary\r\n{\r\n {"Description", "\u8fd9\u662f\u65b0\u7684\u63cf\u8ff0" },\r\n {"include_annotations", false },\r\n {"updatedTime", DateTime.Now }\r\n});\n'})}),"\n",(0,s.jsx)(r.admonition,{title:"\u5173\u4e8e\u5c5e\u6027\u540d\u5339\u914d\u89c4\u5219",type:"important",children:(0,s.jsxs)(r.p,{children:["\u652f\u6301 ",(0,s.jsx)(r.code,{children:"CamelCase\uff08\u9a7c\u5cf0\u547d\u540d\u6cd5\uff09"}),"\uff0c",(0,s.jsx)(r.code,{children:"Pascal\uff08\u5e15\u65af\u5361\u547d\u540d\u6cd5\uff09"})," \u548c ",(0,s.jsx)(r.code,{children:"UnderScoreCase\uff08\u4e0b\u5212\u7ebf\u547d\u540d\u6cd5\uff09"})," \u547d\u540d\u65b9\u5f0f\u3002"]})}),"\n",(0,s.jsx)(r.h3,{id:"26133-\u8bbe\u7f6e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668",children:"26.1.3.3 \u8bbe\u7f6e\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668"}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"JobBuilder"})," \u63d0\u4f9b\u4e86\u548c ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u5b8c\u5168\u5339\u914d\u7684 ",(0,s.jsx)(r.code,{children:"Set[\u5c5e\u6027\u540d]"})," \u65b9\u6cd5\u6765\u914d\u7f6e\u4f5c\u4e1a\u4fe1\u606f\u5404\u4e2a\u5c5e\u6027\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3,20}",children:'services.AddSchedule(options =>\r\n{\r\n var jobBuilder = JobBuilder.Create()\r\n .SetJobId("job1") // \u4f5c\u4e1a Id\r\n .SetGroupName("group1") // \u4f5c\u4e1a\u7ec4\u540d\u79f0\r\n .SetJobType("Furion.Application", "Furion.Application.MyJob") // \u4f5c\u4e1a\u7c7b\u578b\uff0c\u652f\u6301\u591a\u4e2a\u91cd\u8f7d\r\n .SetJobType() // \u4f5c\u4e1a\u7c7b\u578b\uff0c\u652f\u6301\u591a\u4e2a\u91cd\u8f7d\r\n .SetJobType(typeof(MyJob)) // \u4f5c\u4e1a\u7c7b\u578b\uff0c\u652f\u6301\u591a\u4e2a\u91cd\u8f7d\r\n .SetDescription("\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0") // \u4f5c\u4e1a\u63cf\u8ff0\r\n .SetConcurrent(false) // \u5e76\u884c\u8fd8\u662f\u4e32\u884c\u65b9\u5f0f\uff0cfalse \u4e3a \u4e32\u884c\r\n .SetIncludeAnnotations(true) // \u662f\u5426\u626b\u63cf IJob \u7c7b\u578b\u7684\u89e6\u53d1\u5668\u7279\u6027\uff0ctrue \u4e3a \u626b\u63cf\r\n .SetProperties("{}") // \u4f5c\u4e1a\u989d\u5916\u6570\u636e Dictionary \u7c7b\u578b\u5e8f\u5217\u5316\uff0c\u652f\u6301\u591a\u4e2a\u91cd\u8f7d\r\n .SetProperties(new Dictionary { { "name", "Furion" } }) // \u4f5c\u4e1a\u7c7b\u578b\u989d\u5916\u6570\u636e\uff0c\u652f\u6301\u591a\u4e2a\u91cd\u8f7d\uff0c\u63a8\u8350\uff01\uff01\uff01\r\n .SetDynamicExecuteAsync((context, stoppingToken) => {\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }) // \u52a8\u6001\u59d4\u6258\u5904\u7406\u7a0b\u5e8f\uff0c\u4e00\u65e6\u8bbe\u7f6e\u4e86\u6b64\u59d4\u6258\uff0c\u90a3\u4e48\u4f18\u5148\u7ea7\u5c06\u5927\u4e8e MyJob \u7684 ExecuteAsync\r\n ;\r\n\r\n options.AddJob(jobBuilder, Triggers.PeriodSeconds(5));\r\n});\n'})}),"\n",(0,s.jsx)(r.h3,{id:"26134-\u4f5c\u4e1a\u4fe1\u606f\u6784\u5efa\u5668\u989d\u5916\u6570\u636e",children:"26.1.3.4 \u4f5c\u4e1a\u4fe1\u606f/\u6784\u5efa\u5668\u989d\u5916\u6570\u636e"}),"\n",(0,s.jsxs)(r.p,{children:["\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u5728\u4f5c\u4e1a\u8fd0\u884c\u7684\u65f6\u5019\u6dfb\u52a0\u4e00\u4e9b\u989d\u5916\u6570\u636e\uff0c\u6216\u8005\u5b9e\u73b0\u591a\u4e2a\u89e6\u53d1\u5668\u5171\u4eab\u6570\u636e\uff0c\u7ecf\u5e38\u7528\u4e8e ",(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c\u4e2d\uff08",(0,s.jsx)(r.code,{children:"\u5e76\u884c"})," \u4e5f\u540c\u6837\u5de5\u4f5c\uff09\uff0c\u540e\u9762\u4e00\u4e2a\u89e6\u53d1\u5668\u9700\u7b49\u5f85\u524d\u4e00\u4e2a\u89e6\u53d1\u5668\u5b8c\u6210\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {13-14,16}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n var jobDetail = context.JobDetail;\r\n\r\n var count = jobDetail.GetProperty("count");\r\n jobDetail.AddOrUpdateProperty("count", count + 1); // \u9012\u589e count\r\n\r\n _logger.LogInformation($"count: {count} {context}");\r\n\r\n await Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u8fd0\u884c\u65e5\u5fd7\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {12,14,16,18}",children:"info: 2022-12-03 23:16:46.5150228 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-03 23:16:46.5197497 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-03 23:16:46.6987703 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-03 23:16:46.7003295 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-03 23:16:46.7248216 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-03 23:16:51.7013640 +08:00 \u661f\u671f\u516d L MyJob[0] #8\r\n count: 0 [C] 5s 1ts 2022-12-03 23:16:51.663 -> 2022-12-03 23:16:56.656\r\ninfo: 2022-12-03 23:16:56.6768044 +08:00 \u661f\u671f\u516d L MyJob[0] #9\r\n count: 1 [C] 5s 2ts 2022-12-03 23:16:56.656 -> 2022-12-03 23:17:01.635\r\ninfo: 2022-12-03 23:17:01.6454604 +08:00 \u661f\u671f\u516d L MyJob[0] #8\r\n count: 2 [C] 5s 3ts 2022-12-03 23:17:01.635 -> 2022-12-03 23:17:06.608\r\ninfo: 2022-12-03 23:17:06.6247917 +08:00 \u661f\u671f\u516d L MyJob[0] #6\r\n count: 3 [C] 5s 4ts 2022-12-03 23:17:06.608 -> 2022-12-03 23:17:11.586\n"})}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u8c03\u5ea6\u6a21\u5757\u4e3a ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u548c ",(0,s.jsx)(r.code,{children:"JobBuilder"})," \u63d0\u4f9b\u4e86\u591a\u4e2a\u65b9\u6cd5\u64cd\u4f5c\u989d\u5916\u6570\u636e\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,5,8,11,14,17,20,23}",children:'// \u67e5\u770b\u6240\u6709\u989d\u5916\u6570\u636e\r\nvar properties = jobDetail.GetProperties();\r\n\r\n// \u67e5\u770b\u5355\u4e2a\u989d\u5916\u6570\u636e\uff0c\u8fd4\u56de object\r\nvar value = jobBuilder.GetProperty("key");\r\n\r\n// \u67e5\u770b\u5355\u4e2a\u989d\u5916\u6570\u636e\u6cdb\u578b\r\nvar value = jobDetail.GetProperty("key");\r\n\r\n// \u6dfb\u52a0\u65b0\u7684\u989d\u5916\u6570\u636e\uff0c\u652f\u6301\u94fe\u5f0f\u64cd\u4f5c\uff0c\u5982\u679c\u952e\u5df2\u5b58\u5728\uff0c\u5219\u8df3\u8fc7\r\njobDetail.AddProperty("key", "Furion").AddProperty("key1", 2);\r\n\r\n// \u6dfb\u52a0\u6216\u66f4\u65b0\u989d\u5916\u6570\u636e\uff0c\u652f\u6301\u94fe\u5f0f\u64cd\u4f5c\uff0c\u4e0d\u5b58\u5728\u5219\u65b0\u589e\uff0c\u5b58\u5728\u5219\u66ff\u6362\uff0c\u63a8\u8350\r\njobDetail.AddOrUpdateProperty("key", "Furion").AddOrUpdateProperty("key1", 2);\r\n\r\n// \u8fd8\u53ef\u4ee5\u901a\u8fc7\u59d4\u6258\u7684\u65b9\u5f0f\uff1a\u5982\u679c\u952e\u4e0d\u5b58\u5728\u5219\u63d2\u5165 count = newValue\uff0c\u5426\u5219\u66f4\u65b0\u4e3a value\uff08\u65e7\u503c\uff09+1\r\njobDetail.AddOrUpdateProperty("count", newValue, value => value + 1);\r\n\r\n// \u5220\u9664\u67d0\u4e2a\u989d\u5916\u6570\u636e\uff0c\u652f\u6301\u94fe\u5f0f\u64cd\u4f5c\uff0c\u5982\u679c key \u4e0d\u5b58\u5728\u5219\u8df3\u8fc7\r\njobDetail.RemoveProperty("key").RemoveProperty("key1");\r\n\r\n// \u6e05\u7a7a\u6240\u6709\u989d\u5916\u6570\u636e\r\njobDetail.ClearProperties();\n'})}),"\n",(0,s.jsx)(r.admonition,{title:"\u4f5c\u4e1a\u989d\u5916\u6570\u636e\u7c7b\u578b\u652f\u6301",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u989d\u5916\u6570\u636e\u6bcf\u4e00\u9879\u7684\u503c\u53ea\u652f\u6301 ",(0,s.jsx)(r.code,{children:"int32"}),"\uff0c",(0,s.jsx)(r.code,{children:"int64"}),"\uff0c",(0,s.jsx)(r.code,{children:"string"}),"\uff0c",(0,s.jsx)(r.code,{children:"bool"}),"\uff0c",(0,s.jsx)(r.code,{children:"null"})," \u6216\u5b83\u4eec\u7ec4\u6210\u7684\u6570\u7ec4\u7c7b\u578b\u3002"]})}),"\n",(0,s.jsx)(r.h3,{id:"26135-\u4f5c\u4e1a\u4fe1\u606f\u7279\u6027",children:"26.1.3.5 \u4f5c\u4e1a\u4fe1\u606f\u7279\u6027"}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u4fe1\u606f\u7279\u6027 ",(0,s.jsx)(r.code,{children:"[JobDetail]"})," \u662f\u4e3a\u4e86\u65b9\u4fbf\u8fd0\u884c\u65f6\u6216\u542f\u52a8\u65f6\u5feb\u901f\u521b\u5efa\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668\u800c\u63d0\u4f9b\u7684\uff0c\u53ef\u5728\u542f\u52a8\u65f6\u6216\u8fd0\u884c\u65f6\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u521b\u5efa\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1}",children:'[JobDetail("job1", "\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0")]\r\n[PeriodSeconds(5, TriggerId = "trigger1")]\r\npublic class MyJob : IJob\r\n{\r\n}\n'})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u542f\u52a8 ",(0,s.jsx)(r.code,{children:"IncludeAnnotations"})," \u5c5e\u6027\u81ea\u52a8\u586b\u5145"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {4}",children:"services.AddSchedule(options =>\r\n{\r\n options.AddJob(JobBuilder.Create()\r\n .SetIncludeAnnotations(true)); // \u6b64\u65f6 [JobDetail] \u914d\u7f6e\u7684\u975e\u7a7a\u5c5e\u6027\u5c06\u81ea\u52a8\u590d\u5236\u7ed9 JobBuilder\uff0c[PeriodSeconds] \u4e5f\u4f1a\u81ea\u52a8\u521b\u5efa TriggerBuilder\r\n});\n"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsx)(r.strong,{children:"\u624b\u52a8\u626b\u63cf\u5e76\u521b\u5efa\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668"})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var schedulerBuilder = typeof(MyJob).ScanToBuilder();\n"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsx)(r.strong,{children:"\u901a\u8fc7\u7a0b\u5e8f\u96c6\u7c7b\u578b\u626b\u63cf\u6279\u91cf\u521b\u5efa\u4f5c\u4e1a\u8ba1\u5212\u6784\u5efa\u5668"})}),"\n"]}),"\n",(0,s.jsxs)(r.p,{children:["\u4e5f\u53ef\u4ee5\u7528\u4e8e\u4f5c\u4e1a\u6301\u4e45\u5316 ",(0,s.jsx)(r.code,{children:"Preload"})," \u521d\u59cb\u5316\u65f6\u4f7f\u7528\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,4-5,8}",children:"public IEnumerable Preload()\r\n{\r\n // \u626b\u63cf\u6240\u6709\u7c7b\u578b\u5e76\u521b\u5efa\r\n return App.EffectiveTypes.Where(t => t.IsJobType())\r\n .Select(t => t.ScanToBuilder());\r\n\r\n // \u8fd8\u53ef\u4ee5\u66f4\u7b80\u5355~~\r\n return App.EffectiveTypes.ScanToBuilders();\r\n}\n"})}),"\n",(0,s.jsx)(r.hr,{}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"\u4f5c\u4e1a\u4fe1\u606f\u7279\u6027\u8fd8\u63d0\u4f9b\u4e86\u591a\u4e2a\u5c5e\u6027\u914d\u7f6e"}),"\uff0c\u5982\uff1a"]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"JobId"}),"\uff1a\u4f5c\u4e1a\u4fe1\u606f Id\uff0c",(0,s.jsx)(r.code,{children:"string"})," \u7c7b\u578b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"GroupName"}),"\uff1a\u4f5c\u4e1a\u7ec4\u540d\u79f0\uff0c",(0,s.jsx)(r.code,{children:"string"})," \u7c7b\u578b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"Description"}),"\uff1a\u63cf\u8ff0\u4fe1\u606f\uff0c",(0,s.jsx)(r.code,{children:"string"})," \u7c7b\u578b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"Concurrent"}),"\uff1a\u662f\u5426\u91c7\u7528\u5e76\u884c\u6267\u884c\uff0c",(0,s.jsx)(r.code,{children:"bool"})," \u7c7b\u578b\uff0c\u5982\u679c\u8bbe\u7f6e\u4e3a ",(0,s.jsx)(r.code,{children:"false"}),"\uff0c\u90a3\u4e48\u4f7f\u7528 ",(0,s.jsx)(r.code,{children:"\u4e32\u884c"})," \u6267\u884c"]}),"\n"]}),"\n",(0,s.jsx)(r.p,{children:"\u4f7f\u7528\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1-6}",children:'[JobDetail("jobId")] // \u4ec5\u4f5c\u4e1a Id\r\n[JobDetail("jobId", "\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0")] // \u63cf\u8ff0\r\n[JobDetail("jobId", false)] // \u4e32\u884c\r\n[JobDetail("jobId", false, "\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0")] // \u4e32\u884c + \u63cf\u8ff0\r\n[JobDetail("jobId", Concurrent = false, Description = "\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0")]\r\n[JobDetail("jobId", Concurrent = false, Description = "\u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0", GroupName = "\u5206\u7ec4\u540d")]\r\npublic class MyJob : IJob\r\n{\r\n // ....\r\n}\n'})}),"\n",(0,s.jsx)(r.h3,{id:"26136-\u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa",children:"26.1.3.6 \u591a\u79cd\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa"}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"JobDetail"})," \u548c ",(0,s.jsx)(r.code,{children:"JobBuilder"})," \u90fd\u63d0\u4f9b\u4e86\u591a\u79cd\u5c06\u81ea\u8eab\u8f6c\u6362\u6210\u7279\u5b9a\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u3002"]}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u8f6c\u6362\u6210 ",(0,s.jsx)(r.code,{children:"JSON"})," \u5b57\u7b26\u4e32"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var json = jobDetail.ConvertToJSON();\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u5b57\u7b26\u4e32\u6253\u5370\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-json",metastring:"showLineNumbers",children:'{\r\n "jobId": "job1",\r\n "groupName": null,\r\n "jobType": "MyJob",\r\n "assemblyName": "ConsoleApp13",\r\n "description": null,\r\n "concurrent": true,\r\n "includeAnnotations": false,\r\n "properties": "{}",\r\n "updatedTime": "2022-12-04 11:51:00.483"\r\n}\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u8f6c\u6362\u6210 ",(0,s.jsx)(r.code,{children:"SQL"})," \u5b57\u7b26\u4e32"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,6,9,13,16,20}",children:'// \u8f93\u51fa\u65b0\u589e SQL\uff0c\u4f7f\u7528 CamelCase \u5c5e\u6027\u547d\u540d\r\nvar insertSql = jobDetail.ConvertToSQL("tbName"\r\n , PersistenceBehavior.Appended\r\n , NamingConventions.CamelCase);\r\n// \u66f4\u4fbf\u6377\u62d3\u5c55\r\nvar insertSql = jobDetail.ConvertToInsertSQL("tbName", NamingConventions.CamelCase);\r\n\r\n// \u8f93\u51fa\u5220\u9664 SQL\uff0c\u4f7f\u7528 Pascal \u5c5e\u6027\u547d\u540d\r\nvar deleteSql = jobDetail.ConvertToSQL("tbName"\r\n , PersistenceBehavior.Removed\r\n , NamingConventions.Pascal);\r\n// \u66f4\u4fbf\u6377\u62d3\u5c55\r\nvar deleteSql = jobDetail.ConvertToDeleteSQL("tbName", NamingConventions.Pascal);\r\n\r\n// \u8f93\u51fa\u66f4\u65b0 SQL\uff0c\u4f7f\u7528 UnderScoreCase \u5c5e\u6027\u547d\u540d\r\nvar updateSql = jobDetail.ConvertToSQL("tbName"\r\n , PersistenceBehavior.Updated\r\n , NamingConventions.UnderScoreCase);\r\n// \u66f4\u4fbf\u6377\u62d3\u5c55\r\nvar updateSql = jobDetail.ConvertToUpdateSQL("tbName", NamingConventions.UnderScoreCase);\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u5b57\u7b26\u4e32\u6253\u5370\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-sql",metastring:"showLineNumbers {2,25,28}",children:"-- \u65b0\u589e\u8bed\u53e5\r\nINSERT INTO tbName(\r\n jobId,\r\n groupName,\r\n jobType,\r\n assemblyName,\r\n description,\r\n concurrent,\r\n includeAnnotations,\r\n properties,\r\n updatedTime\r\n)\r\nVALUES(\r\n 'job1',\r\n NULL,\r\n 'MyJob',\r\n 'ConsoleApp13',\r\n NULL,\r\n 1,\r\n 0,\r\n '{}',\r\n '2022-12-04 11:53:05.489'\r\n);\r\n-- \u5220\u9664\u8bed\u53e5\r\nDELETE FROM tbName\r\nWHERE JobId = 'job1';\r\n-- \u66f4\u65b0\u8bed\u53e5\r\nUPDATE tbName\r\nSET\r\n job_id = 'job1',\r\n group_name = NULL,\r\n job_type = 'MyJob',\r\n assembly_name = 'ConsoleApp13',\r\n description = NULL,\r\n concurrent = 1,\r\n include_annotations = 0,\r\n properties = '{}',\r\n updated_time = '2022-12-04 11:53:05.489'\r\nWHERE job_id = 'job1';\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"3",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u8f6c\u6362\u6210 ",(0,s.jsx)(r.code,{children:"Monitor"})," \u5b57\u7b26\u4e32"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var monitor = jobDetail.ConvertToMonitor();\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u5b57\u7b26\u4e32\u6253\u5370\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers",children:"\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 JobDetail \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\r\n\u2523 MyJob\r\n\u2523\r\n\u2523 jobId\uff1a job1\r\n\u2523 groupName\uff1a\r\n\u2523 jobType\uff1a MyJob\r\n\u2523 assemblyName\uff1a ConsoleApp13\r\n\u2523 description\uff1a\r\n\u2523 concurrent\uff1a True\r\n\u2523 includeAnnotations\uff1a False\r\n\u2523 properties\uff1a {}\r\n\u2523 updatedTime\uff1a 2022-12-04 11:55:11.186\r\n\u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 JobDetail \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n"})}),"\n",(0,s.jsxs)(r.ol,{start:"4",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsx)(r.strong,{children:"\u7b80\u8981\u5b57\u7b26\u4e32\u8f93\u51fa"})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var str = jobDetail.ToString();\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u5b57\u7b26\u4e32\u6253\u5370\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers",children:" \u8fd9\u662f\u4e00\u6bb5\u63cf\u8ff0 [C]\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26137-\u81ea\u5b9a\u4e49-sql-\u8f93\u51fa\u914d\u7f6e",children:["26.1.3.7 \u81ea\u5b9a\u4e49 ",(0,s.jsx)(r.code,{children:"SQL"})," \u8f93\u51fa\u914d\u7f6e"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.2 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,3,8,13,18}",children:"services.AddSchedule(options =>\r\n{\r\n options.JobDetail.ConvertToSQL = (tableName, columnNames, jobDetail, behavior, naming) =>\r\n {\r\n // \u751f\u6210\u65b0\u589e SQL\r\n if (behavior == PersistenceBehavior.Appended)\r\n {\r\n return jobDetail.ConvertToInsertSQL(tableName, naming);\r\n }\r\n // \u751f\u6210\u66f4\u65b0 SQL\r\n else if (behavior == PersistenceBehavior.Updated)\r\n {\r\n return jobDetail.ConvertToUpdateSQL(tableName, naming);\r\n }\r\n // \u751f\u6210\u5220\u9664 SQL\r\n else if (behavior == PersistenceBehavior.Removed)\r\n {\r\n return jobDetail.ConvertToDeleteSQL(tableName, naming);\r\n }\r\n\r\n return string.Empty;\r\n };\r\n});\n"})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"ConvertToSQL"})," \u59d4\u6258\u53c2\u6570\u8bf4\u660e","\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"tableName"}),"\uff1a\u6570\u636e\u5e93\u8868\u540d\u79f0\uff0c",(0,s.jsx)(r.code,{children:"string"})," \u7c7b\u578b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"columnNames"}),"\uff1a\u6570\u636e\u5e93\u5217\u540d\uff1a",(0,s.jsx)(r.code,{children:"string[]"})," \u7c7b\u578b\uff0c\u53ea\u80fd\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"\u7d22\u5f15"})," \u83b7\u53d6"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"jobDetail"}),"\uff1a\u4f5c\u4e1a\u4fe1\u606f ",(0,s.jsx)(r.code,{children:"JobDetail"})," \u5bf9\u8c61"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"behavior"}),"\uff1a\u6301\u4e45\u5316 ",(0,s.jsx)(r.code,{children:"PersistenceBehavior"})," \u7c7b\u578b\uff0c\u7528\u4e8e\u6807\u8bb0 ",(0,s.jsx)(r.code,{children:"\u65b0\u589e"}),"\uff0c",(0,s.jsx)(r.code,{children:"\u66f4\u65b0"})," \u8fd8\u662f ",(0,s.jsx)(r.code,{children:"\u5220\u9664"})," \u64cd\u4f5c"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"naming"}),"\uff1a\u547d\u540d\u6cd5 ",(0,s.jsx)(r.code,{children:"NamingConventions"})," \u7c7b\u578b\uff0c\u5305\u542b ",(0,s.jsx)(r.code,{children:"CamelCase\uff08\u9a7c\u5cf0\u547d\u540d\u6cd5\uff09"}),"\uff0c",(0,s.jsx)(r.code,{children:"Pascal\uff08\u5e15\u65af\u5361\u547d\u540d\u6cd5\uff09"})," \u548c ",(0,s.jsx)(r.code,{children:"UnderScoreCase\uff08\u4e0b\u5212\u7ebf\u547d\u540d\u6cd5\uff09"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u6ce8\u610f\u4e8b\u9879",type:"caution",children:(0,s.jsxs)(r.p,{children:["\u5982\u679c\u5728\u8be5\u81ea\u5b9a\u4e49 ",(0,s.jsx)(r.code,{children:"SQL"})," \u8f93\u51fa\u65b9\u6cd5\u4e2d\u8c03\u7528 ",(0,s.jsx)(r.code,{children:"jobDetail.ConvertToSQL(..)"})," \u4f1a\u5bfc\u81f4\u6b7b\u5faa\u73af\u3002"]})}),"\n",(0,s.jsx)(r.h3,{id:"26138-\u542f\u7528\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u8f93\u51fa",children:"26.1.3.8 \u542f\u7528\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u8f93\u51fa"}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.3.7 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:["\u901a\u5e38\u6211\u4eec\u9700\u8981\u5728 ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b\u4e2d\u8f93\u51fa\u4f5c\u4e1a\u89e6\u53d1\u65e5\u5fd7\uff0c\u5982 ",(0,s.jsx)(r.code,{children:'_logger.LogInformation($"{context}");'})]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {11}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsxs)(r.strong,{children:["\u4f46\u8fd9\u6837\u7684 ",(0,s.jsx)(r.code,{children:"\u8303\u5f0f\u4ee3\u7801"})," \u51e0\u4e4e\u6bcf\u4e00\u4e2a ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b\u90fd\u53ef\u80fd\u8f93\u51fa"]}),"\uff0c\u6240\u4ee5\u5728 ",(0,s.jsx)(r.code,{children:"Furion 4.8.3.7+"})," \u7248\u672c\u63d0\u4f9b\u4e86\u66f4\u4fbf\u6377\u7684\u914d\u7f6e\uff0c\u65e0\u9700\u6bcf\u4e00\u4e2a ",(0,s.jsx)(r.code,{children:"IJob"})," \u7f16\u5199 ",(0,s.jsx)(r.code,{children:'_logger.LogInformation($"{context}");'}),"\u3002"]}),"\n",(0,s.jsx)(r.p,{children:"\u914d\u7f6e\u542f\u7528\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:"services.AddSchedule(options =>\r\n{\r\n options.JobDetail.LogEnabled = true; // \u9ed8\u8ba4 false\r\n});\n"})}),"\n",(0,s.jsxs)(r.p,{children:["\u4e4b\u540e ",(0,s.jsx)(r.code,{children:"MyJob"})," \u53ef\u4ee5\u66f4\u52a0\u7cbe\u7b80\u4e86\uff0c\u65e5\u5fd7\u7c7b\u522b\u81ea\u52a8\u8bbe\u7f6e\u4e3a ",(0,s.jsx)(r.code,{children:"MyJob"})," \u7c7b\u578b\u5b8c\u6574\u9650\u5b9a\u540d\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {5}",children:'public class MyJob : IJob\r\n{\r\n public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n // \u8fd9\u91cc\u5199\u4e1a\u52a1\u903b\u8f91\u5373\u53ef\uff0c\u65e0\u9700\u8c03\u7528 _logger.LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {1,3,5}",children:"info: 2022-12-14 11:56:12.3963326 +08:00 \u661f\u671f\u4e09 L Furion.Application.MyJob[0] #4\r\n [C] 5s 1ts 2022-12-14 11:56:08.361 -> 2022-12-14 11:56:13.366\r\ninfo: 2022-12-14 11:56:13.4100745 +08:00 \u661f\u671f\u4e09 L Furion.Application.MyJob[0] #6\r\n [C] 5s 2ts 2022-12-14 11:56:13.366 -> 2022-12-14 11:56:18.376\r\ninfo: 2022-12-14 11:56:18.3931380 +08:00 \u661f\u671f\u4e09 L Furion.Application.MyJob[0] #9\r\n [C] 5s 3ts 2022-12-14 11:56:18.376 -> 2022-12-14 11:56:23.360\n"})}),"\n",(0,s.jsxs)(r.h2,{id:"2614-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f-ijob",children:["26.1.4 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f ",(0,s.jsx)(r.code,{children:"IJob"})]}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u662f\u4f5c\u4e1a\u7b26\u5408\u89e6\u53d1\u65f6\u95f4\u6267\u884c\u7684\u4e1a\u52a1\u903b\u8f91\u4ee3\u7801\uff0c\u901a\u5e38\u7531\u7a0b\u5e8f\u5458\u7f16\u5199\uff0c\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u9700\u5b9e\u73b0 ",(0,s.jsx)(r.code,{children:"IJob"})," \u63a5\u53e3\u3002"]}),"\n",(0,s.jsx)(r.h3,{id:"26141-\u5982\u4f55\u5b9a\u4e49",children:"26.1.4.1 \u5982\u4f55\u5b9a\u4e49"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,3,5}",children:"public class MyJob : IJob\r\n{\r\n public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n // your code...\r\n }\r\n}\n"})}),"\n",(0,s.jsxs)(r.h3,{id:"26142-jobexecutingcontext-\u4e0a\u4e0b\u6587",children:["26.1.4.2 ",(0,s.jsx)(r.code,{children:"JobExecutingContext"})," \u4e0a\u4e0b\u6587"]}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"JobExecutingContext"})," \u4e0a\u4e0b\u6587\u4f5c\u4e3a ",(0,s.jsx)(r.code,{children:"ExecuteAsync"})," \u65b9\u6cd5\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\uff0c\u5305\u542b\u4ee5\u4e0b\u8fd0\u884c\u65f6\u4fe1\u606f\uff1a"]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsxs)(r.strong,{children:[(0,s.jsx)(r.code,{children:"JobExecutingContext"})," \u5c5e\u6027\u5217\u8868"]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"JobId"}),"\uff1a\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"Id"})]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"TriggerId"}),"\uff1a\u5f53\u524d\u89e6\u53d1\u5668 ",(0,s.jsx)(r.code,{children:"Id"})]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"JobDetail"}),"\uff1a\u4f5c\u4e1a\u4fe1\u606f"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"Trigger"}),"\uff1a\u4f5c\u4e1a\u89e6\u53d1\u5668"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"OccurrenceTime"}),"\uff1a\u4f5c\u4e1a\u8ba1\u5212\u89e6\u53d1\u65f6\u95f4\uff0c\u6700\u51c6\u786e\u7684\u8bb0\u5f55\u65f6\u95f4"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"ExecutingTime"}),"\uff1a\u5b9e\u9645\u6267\u884c\u65f6\u95f4\uff08\u53ef\u80fd\u5b58\u5728\u8bef\u5dee\uff09"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"RunId"}),"\uff1a\u672c\u6b21\u4f5c\u4e1a\u6267\u884c\u552f\u4e00 ",(0,s.jsx)(r.code,{children:"Id"}),"\uff0c",(0,s.jsx)(r.code,{children:"Furion 4.8.5.1+"})," \u63d0\u4f9b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"Result"}),"\uff1a\u8bbe\u7f6e/\u8bfb\u53d6\u672c\u6b21\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff0c",(0,s.jsx)(r.code,{children:"Furion 4.8.7.7+"})," \u63d0\u4f9b"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:"ServiceProvider"}),"\uff1a\u670d\u52a1\u63d0\u4f9b\u5668\uff0c",(0,s.jsx)(r.code,{children:"Furion 4.8.7.10+"})," \u63d0\u4f9b"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsxs)(r.strong,{children:[(0,s.jsx)(r.code,{children:"JobExecutingContext"})," \u65b9\u6cd5\u5217\u8868"]}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:".ConvertToJSON(naming)"}),"\uff1a\u5c06\u4e0a\u4e0b\u6587\u8f6c\u6362\u6210 ",(0,s.jsx)(r.code,{children:"JSON"})," \u5b57\u7b26\u4e32"]}),"\n",(0,s.jsxs)(r.li,{children:[(0,s.jsx)(r.code,{children:".ToString()"}),"\uff1a\u8f93\u51fa\u4e3a\u5b57\u7b26\u4e32"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(r.h3,{id:"26143-\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5b9e\u4f8b",children:"26.1.4.3 \u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5b9e\u4f8b"}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.8.13 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:["\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u4f1a\u5728\u4f5c\u4e1a\u89e6\u53d1\u5668\u7b26\u5408\u89e6\u53d1\u6761\u4ef6\u4e0b\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"ActivatorUtilities.CreateInstance"})," \u52a8\u6001\u521b\u5efa\uff0c\u4e5f\u5c31\u662f",(0,s.jsxs)(r.strong,{children:["\u6bcf\u6b21\u89e6\u53d1\u90fd\u4f1a\u521b\u5efa\u65b0\u7684 ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u4f8b"]}),"\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"var jobHandler = ActivatorUtilities.CreateInstance(_serviceProvider, jobType);\n"})}),"\n",(0,s.jsxs)(r.p,{children:["\u5176\u4e2d ",(0,s.jsx)(r.code,{children:"_serviceProvider"})," \u662f",(0,s.jsx)(r.strong,{children:"\u5355\u4f8b\u670d\u52a1\u63d0\u4f9b\u5668"}),"\uff0c\u6240\u4ee5 ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b\u53ea\u80fd\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,s.jsx)(r.code,{children:"\u5355\u4f8b\u670d\u52a1"}),"\u3002\u5982\u679c\u6ca1\u6709\u8303\u56f4\u4f5c\u7528\u57df\u670d\u52a1\u7684\u9700\u6c42\uff0c\u90a3\u4e48\u53ef\u4ee5\u5c06 ",(0,s.jsx)(r.code,{children:"IJob"})," \u6ce8\u518c\u4e3a\u5355\u4f8b\u670d\u52a1\uff0c",(0,s.jsxs)(r.strong,{children:["\u8fd9\u6837\u5c31\u53ef\u4ee5\u907f\u514d\u6bcf\u6b21\u91cd\u590d\u521b\u5efa ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u4f8b\uff0c\u5bf9\u6027\u80fd\u548c\u51cf\u5c11\u5185\u5b58\u5360\u7528\u6709\u4e0d\u5c0f\u4f18\u5316\u3002"]})," \u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers",children:"services.AddSingleton();\n"})}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"\u5982\u679c\u5e0c\u671b\u80fd\u591f\u5728\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8303\u56f4\u4f5c\u7528\u57df\u6216\u77ac\u65f6\u4f5c\u7528\u57df"}),"\uff0c\u53ef\u5b9e\u73b0 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u63a5\u53e3\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {6,8-10,12-13}",children:"using Furion.Schedule;\r\nusing Microsoft.Extensions.DependencyInjection;\r\n\r\nnamespace Furion.Application;\r\n\r\npublic class JobFactory : IJobFactory\r\n{\r\n public IJob CreateJob(IServiceProvider serviceProvider, JobFactoryContext context)\r\n {\r\n return ActivatorUtilities.CreateInstance(serviceProvider, context.JobType) as IJob;\r\n\r\n // \u5982\u679c\u901a\u8fc7 services.AddSingleton(); \u6216 serivces.AddScoped(); \u6216 services.AddTransient \u53ef\u901a\u8fc7\u4e0b\u5217\u65b9\u5f0f\r\n // return serviceProvider.GetRequiredService(context.JobType) as IJob;\r\n }\r\n}\n"})}),"\n",(0,s.jsxs)(r.p,{children:["\u4e4b\u540e\u6ce8\u518c ",(0,s.jsx)(r.code,{children:"JobFactory"})," \u5373\u53ef\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {4}",children:"services.AddSchedule(options =>\r\n{\r\n // \u6dfb\u52a0\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u5de5\u5382\r\n options.AddJobFactory();\r\n});\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u8fd9\u6837\u4f5c\u4e1a\u5c31\u53ef\u4ee5\u6ce8\u5165\u8303\u56f4\u548c\u77ac\u65f6\u670d\u52a1\u4e86\u3002"}),"\n",(0,s.jsx)(r.h3,{id:"26144-\u4f9d\u8d56\u6ce8\u5165",children:"26.1.4.4 \u4f9d\u8d56\u6ce8\u5165"}),"\n",(0,s.jsxs)(r.p,{children:["\u5b9e\u73b0 ",(0,s.jsx)(r.code,{children:"IJob"})," \u7684\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u7c7b\u578b\u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,s.jsx)(r.code,{children:"\u5355\u4f8b"}),"\uff0c",(0,s.jsx)(r.strong,{children:"\u90a3\u4e48\u53ea\u8981\u662f\u5355\u4f8b\u7684\u670d\u52a1\uff0c\u7686\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165"}),"\uff0c\u5982\uff1a",(0,s.jsx)(r.code,{children:"ILogger<>"}),"\uff0c",(0,s.jsx)(r.code,{children:"IConfiguration"}),"\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3-4,6-7}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n private readonly IConfiguration _configuration;\r\n\r\n public MyJob(ILogger logger\r\n , IConfiguration configuration)\r\n {\r\n _logger = logger;\r\n _configuration = configuration;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context} {_configuration["key"]}");\r\n await Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u5982\u679c\u662f\u975e ",(0,s.jsx)(r.code,{children:"\u5355\u4f8b"})," \u7684\u63a5\u53e3\uff0c\u5982 ",(0,s.jsx)(r.code,{children:"\u77ac\u65f6"})," \u6216 ",(0,s.jsx)(r.code,{children:"\u8303\u56f4"})," \u670d\u52a1\uff0c\u53ef\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"IServiceScopeFactory"})," \u521b\u5efa"]})}),"\n"]}),"\n",(0,s.jsxs)(r.admonition,{type:"tip",children:[(0,s.jsxs)(r.mdxAdmonitionTitle,{children:["\u63a8\u8350 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u65b9\u5f0f"]}),(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"Furion 4.8.8.13+"})," \u7248\u672c\u53ef\u4ee5\u901a\u8fc7\u4e0a\u4e00\u5c0f\u8282 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u7edf\u4e00\u5b9e\u73b0\u3002",(0,s.jsx)(r.strong,{children:"\u63a8\u8350"}),"\u3002"]})]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {5,9,18-19}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n private readonly IConfiguration _configuration;\r\n private readonly IServiceScopeFactory _scopeFactory;\r\n\r\n public MyJob(ILogger logger\r\n , IConfiguration configuration\r\n , IServiceScopeFactory scopeFactory)\r\n {\r\n _logger = logger;\r\n _configuration = configuration;\r\n _schedulerFactory = scopeFactory;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n using var serviceScope = _scopeFactory.CreateScope();\r\n var repository = serviceScope.ServiceProvider.GetService>();\r\n\r\n _logger.LogInformation($"{context} {_configuration["key"]}");\r\n await Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsx)(r.strong,{children:"\u9488\u5bf9\u9ad8\u9891\u5b9a\u65f6\u4efb\u52a1\uff0c\u6bd4\u5982\u6bcf\u79d2\u6267\u884c\u4e00\u6b21\uff0c\u6216\u8005\u66f4\u9891\u7e41\u7684\u4efb\u52a1"})}),"\n"]}),"\n",(0,s.jsxs)(r.admonition,{type:"tip",children:[(0,s.jsxs)(r.mdxAdmonitionTitle,{children:["\u63a8\u8350 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u65b9\u5f0f"]}),(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.code,{children:"Furion 4.8.8.13+"})," \u7248\u672c\u53ef\u4ee5\u901a\u8fc7\u4e0a\u4e00\u5c0f\u8282 ",(0,s.jsx)(r.code,{children:"IJobFactory"})," \u7edf\u4e00\u5b9e\u73b0\u3002",(0,s.jsx)(r.strong,{children:"\u63a8\u8350"}),"\u3002"]})]}),"\n",(0,s.jsx)(r.p,{children:"\u4e3a\u4e86\u907f\u514d\u9891\u7e41\u521b\u5efa\u4f5c\u7528\u57df\u548c\u9500\u6bc1\u4f5c\u7528\u57df\uff0c\u53ef\u521b\u5efa\u957f\u8303\u56f4\u7684\u4f5c\u7528\u57df\u3002"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {1,5,13,18,25,27}",children:'public class MyJob : IJob, IDisposable\r\n{\r\n private readonly ILogger _logger;\r\n private readonly IConfiguration _configuration;\r\n private readonly IServiceScope _serviceScope;\r\n\r\n public MyJob(ILogger logger\r\n , IConfiguration configuration\r\n , IServiceScopeFactory scopeFactory)\r\n {\r\n _logger = logger;\r\n _configuration = configuration;\r\n _serviceScope = scopeFactory.CreateScope();\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n var repository = _serviceScope.ServiceProvider.GetService>();\r\n var user = await repository.GetAsync(1);\r\n\r\n _logger.LogInformation($"{context} {_configuration["key"]}");\r\n await Task.CompletedTask;\r\n }\r\n\r\n public void Dispose()\r\n {\r\n _serviceScope?.Dispose();\r\n }\r\n}\n'})}),"\n",(0,s.jsxs)(r.h3,{id:"26145-\u52a8\u6001\u4f5c\u4e1a-dynamicjob",children:["26.1.4.5 \u52a8\u6001\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"DynamicJob"})]}),"\n",(0,s.jsxs)(r.p,{children:["\u6846\u67b6\u63d0\u4f9b\u4e86\u4fbf\u6377\u7684\u52a8\u6001\u4f5c\u4e1a ",(0,s.jsx)(r.code,{children:"DynamicJob"})," \u7c7b\u578b\uff0c\u53ef\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"Func"})," \u59d4\u6258\u4f20\u5165\uff0c\u65e0\u9700\u521b\u5efa ",(0,s.jsx)(r.code,{children:"IJob"})," \u5b9e\u73b0\u7c7b\u578b\u3002"]}),"\n",(0,s.jsxs)(r.p,{children:["\u6846\u67b6\u8fd8\u4e3a ",(0,s.jsx)(r.code,{children:"JobExecutionContext"})," \u5c5e\u6027 ",(0,s.jsx)(r.code,{children:"ServiceProvder"})," \u63d0\u4f9b\u4e86 ",(0,s.jsx)(r.code,{children:".GetLogger()"})," \u62d3\u5c55\u65b9\u6cd5\uff0c\u65b9\u4fbf\u5feb\u901f\u83b7\u53d6 ",(0,s.jsx)(r.code,{children:"ILogger"})," \u65e5\u5fd7\u5bf9\u8c61\u5b9e\u4f8b\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,9,18,26}",children:'// \u901a\u8fc7 JobBuilder \u521b\u5efa\r\nvar jobBuilder = JobBuilder.Create((context, stoppingToken) =>\r\n{\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n});\r\n\r\n// \u901a\u8fc7 jobBuilder \u65b9\u6cd5 SetDynamicExecuteAsync \u521b\u5efa\r\njobBuilder.SetDynamicExecuteAsync((context, stoppingToken) =>\r\n{\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n});\r\n\r\n// \u901a\u8fc7 AddJob \u521b\u5efa\r\nservice.AddSchedule(options =>\r\n{\r\n options.AddJob((context, stoppingToken) =>\r\n {\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n }, Triggers.PeriodSeconds(5));\r\n});\r\n\r\n// \u901a\u8fc7 ISchedulerFactory \u521b\u5efa\r\n_schedulerFactory.AddJob((context, stoppingToken) =>\r\n{\r\n context.ServiceProvider.GetLogger().LogInformation($"{context}");\r\n return Task.CompletedTask;\r\n}, Triggers.PeriodSeconds(5));\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u52a8\u6001\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,10,11,13}",children:"info: 2022-12-04 12:26:18.6562296 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-04 12:26:18.6618404 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-04 12:26:18.8727764 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-04 12:26:18.8745765 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-04 12:26:18.9013540 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-04 12:26:23.8753926 +08:00 \u661f\u671f\u65e5 L System.Logging.DynamicJob[0] #6\r\n [C] 5s 1ts 2022-12-04 12:26:23.837 -> 2022-12-04 12:26:28.835\r\ninfo: 2022-12-04 12:26:28.8686474 +08:00 \u661f\u671f\u65e5 L System.Logging.DynamicJob[0] #6\r\n [C] 5s 2ts 2022-12-04 12:26:28.835 -> 2022-12-04 12:26:33.823\r\ninfo: 2022-12-04 12:26:33.8531796 +08:00 \u661f\u671f\u65e5 L System.Logging.DynamicJob[0] #13\r\n [C] 5s 3ts 2022-12-04 12:26:33.823 -> 2022-12-04 12:26:38.820\n"})}),"\n",(0,s.jsx)(r.admonition,{title:"\u52a8\u6001\u4f5c\u4e1a\u548c\u666e\u901a\u4f5c\u4e1a\u7684\u533a\u522b",type:"tip",children:(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["\u52a8\u6001\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u7c7b\u578b\u662f\uff1a",(0,s.jsx)(r.code,{children:"DynamicJob"})," \u7c7b\u578b"]}),"\n",(0,s.jsxs)(r.li,{children:["\u52a8\u6001\u4f5c\u4e1a\u63d0\u4f9b\u7684 ",(0,s.jsx)(r.code,{children:".GetLogger()"})," \u62d3\u5c55\u8f93\u51fa\u65e5\u5fd7\u7c7b\u522b\u662f\uff1a",(0,s.jsx)(r.code,{children:"System.Logging.DynamicJob"})]}),"\n",(0,s.jsxs)(r.li,{children:["\u5982\u679c\u666e\u901a\u4f5c\u4e1a\u540c\u65f6\u8bbe\u7f6e\u4e86 ",(0,s.jsx)(r.code,{children:"SetJobType"})," \u548c ",(0,s.jsx)(r.code,{children:"SetDynamicExecuteAsync"}),"\uff0c\u90a3\u4e48\u4f18\u5148\u4f5c\u4e3a\u52a8\u6001\u4f5c\u4e1a\u6267\u884c\u3002"]}),"\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u52a8\u6001\u4f5c\u4e1a\u65e0\u6cd5\u5c06 ",(0,s.jsx)(r.code,{children:"Func<..>"})," \u8fdb\u884c\u5e8f\u5217\u5316\u6301\u4e45\u5316\u5b58\u50a8"]})}),"\n"]})}),"\n",(0,s.jsxs)(r.h3,{id:"26146-\u4f7f\u7528-roslyn-\u52a8\u6001\u521b\u5efa",children:["26.1.4.6 \u4f7f\u7528 ",(0,s.jsx)(r.code,{children:"Roslyn"})," \u52a8\u6001\u521b\u5efa"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.8.7 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:["\u6309\u7167\u7a0b\u5e8f\u5f00\u53d1\u7684\u6b63\u5e38\u601d\u7ef4\uff0c\u7406\u5e94\u5148\u5728\u4ee3\u7801\u4e2d\u521b\u5efa\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u7c7b\u578b\uff0c\u4f46\u6211\u4eec\u53ef\u4ee5\u501f\u52a9 ",(0,s.jsx)(r.code,{children:"Roslyn"})," \u52a8\u6001\u7f16\u8bd1 ",(0,s.jsx)(r.code,{children:"C#"})," \u4ee3\u7801\u3002"]}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsxs)(r.strong,{children:["\u6839\u636e\u5b57\u7b26\u4e32\u521b\u5efa ",(0,s.jsx)(r.code,{children:"IJob"})," \u7c7b\u578b"]})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {2,9,11,29}",children:'// \u8c03\u7528 Schedular \u9759\u6001\u7c7b\u63d0\u4f9b\u7684 CompileCSharpClassCode \u65b9\u6cd5\r\nvar jobAssembly = Schedular.CompileCSharpClassCode(@"\r\nusing Furion.Schedule;\r\nusing Microsoft.Extensions.Logging;\r\nusing System;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace YourProject;\r\n\r\npublic class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($""\u6211\u662f Roslyn \u65b9\u5f0f\u521b\u5efa\u7684\uff1a{context}"");\r\n await Task.CompletedTask;\r\n }\r\n}\r\n");\r\n\r\n// \u751f\u6210\u8fd0\u884c\u65f6 MyJob \u7c7b\u578b\r\nvar jobType = jobAssembly.GetType("YourProject.MyJob");\n'})}),"\n",(0,s.jsxs)(r.ol,{start:"2",children:["\n",(0,s.jsx)(r.li,{children:(0,s.jsx)(r.strong,{children:"\u6ce8\u518c\u4f5c\u4e1a"})}),"\n"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {4,9}",children:"// \u53ef\u4ee5\u5728\u542f\u52a8\u7684\u65f6\u5019\u6dfb\u52a0\r\nservices.AddSchedule(options =>\r\n{\r\n options.AddJob(jobType\r\n , Triggers.PeriodSeconds(5));\r\n});\r\n\r\n// \u4e5f\u53ef\u4ee5\u5b8c\u5168\u5728\u8fd0\u884c\u65f6\u6dfb\u52a0\uff08\u5e38\u7528\uff09\r\n_schedulerFactory.AddJob(jobType\r\n , Triggers.PeriodSeconds(5));\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u67e5\u770b\u4f5c\u4e1a\u6267\u884c\u65e5\u5fd7\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {6,8,10,12,14,16}",children:"info: 2022-12-04 12:38:00.6249410 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2022-12-04 12:38:00.6294089 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2022-12-04 12:38:00.7496005 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2022-12-04 12:38:00.7514579 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2022-12-04 12:38:00.7836777 +08:00 \u661f\u671f\u65e5 L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2022-12-04 12:38:05.7389682 +08:00 \u661f\u671f\u65e5 L YourProject.MyJob[0] #6\r\n \u6211\u662f Roslyn \u65b9\u5f0f\u521b\u5efa\u7684\uff1a [C] 5s 1ts 2022-12-04 12:38:05.713 -> 2022-12-04 12:38:10.692\r\ninfo: 2022-12-04 12:38:10.7108416 +08:00 \u661f\u671f\u65e5 L YourProject.MyJob[0] #11\r\n \u6211\u662f Roslyn \u65b9\u5f0f\u521b\u5efa\u7684\uff1a [C] 5s 2ts 2022-12-04 12:38:10.692 -> 2022-12-04 12:38:15.673\r\ninfo: 2022-12-04 12:38:15.6925578 +08:00 \u661f\u671f\u65e5 L YourProject.MyJob[0] #11\r\n \u6211\u662f Roslyn \u65b9\u5f0f\u521b\u5efa\u7684\uff1a [C] 5s 3ts 2022-12-04 12:38:15.673 -> 2022-12-04 12:38:20.656\n"})}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"\u60ca\u4e0d\u60ca\u559c\uff0c\u610f\u5916\u610f\u5916~"}),"\u3002"]}),"\n",(0,s.jsx)(r.admonition,{title:"\u5c0f\u77e5\u8bc6",type:"tip",children:(0,s.jsxs)(r.p,{children:["\u901a\u8fc7 ",(0,s.jsx)(r.code,{children:"Roslyn"})," \u7684\u65b9\u5f0f\u652f\u6301\u521b\u5efa ",(0,s.jsx)(r.code,{children:"IJob"}),"\uff0c",(0,s.jsx)(r.code,{children:"JobDetail"}),"\uff0c",(0,s.jsx)(r.code,{children:"Trigger"}),"\uff0c",(0,s.jsx)(r.code,{children:"Scheduler"})," \u54e6\uff0c\u81ea\u884c\u6d4b\u8bd5\u3002\ud83d\ude0a"]})}),"\n",(0,s.jsx)(r.h3,{id:"26147-\u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u5904\u7406",children:"26.1.4.7 \u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u5904\u7406"}),"\n",(0,s.jsx)(r.p,{children:"\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u7a0b\u5e8f\u5458\u5e94\u8be5\u4fdd\u8bc1\u4f5c\u4e1a\u6267\u884c\u7a0b\u5e8f\u603b\u662f\u7a33\u5b9a\u8fd0\u884c\uff0c\u4f46\u6709\u65f6\u5019\u4f1a\u51fa\u73b0\u4e00\u4e9b\u4e0d\u53ef\u907f\u514d\u7684\u610f\u5916\u5bfc\u81f4\u51fa\u73b0\u5f02\u5e38\uff0c\u5982\u7f51\u7edc\u5f02\u5e38\u7b49\u3002"}),"\n",(0,s.jsx)(r.p,{children:"\u4e0b\u9762\u7ed9\u51fa\u6a21\u62df\u51fa\u73b0\u5f02\u5e38\u548c\u5e38\u89c1\u7684\u5904\u7406\u65b9\u5f0f\u4f8b\u5b50\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {3}",children:"services.AddSchedule(options =>\r\n{\r\n options.AddJob(Triggers.PeriodSeconds(3));\r\n});\n"})}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {13-16}",children:'public class MyJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public MyJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogInformation($"{context}");\r\n\r\n // \u6a21\u62df\u5f02\u5e38\r\n var num = 10;\r\n var n = 0;\r\n var c = num / n;\r\n\r\n return Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u8f93\u51fa\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {11-13,23-25}",children:"info: 2023-04-22 22:18:04.2149071 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2023-04-22 22:18:04.2189082 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2023-04-22 22:18:04.3216571 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-04-22 22:18:04.3230110 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2023-04-22 22:18:04.3521056 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2023-04-22 22:18:07.3782666 +08:00 \u661f\u671f\u516d L MyJob[0] #17\r\n [C] 3s 1ts 2023-04-22 22:18:07.288 -> 2023-04-22 22:18:10.308\r\nfail: 2023-04-22 22:18:07.6652239 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #17\r\n Error occurred executing [C] 3s 1ts 2023-04-22 22:18:07.288 -> 2023-04-22 22:18:10.308.\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n System.DivideByZeroException: Attempted to divide by zero.\r\n at MyJob.ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) in C:\\Users\\MonkSoul\\source\\repos\\ConsoleApp3\\Program.cs:line 29\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_3.<b__3>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 233\r\n --- End of stack trace from previous location ---\r\n at Furion.FriendlyException.Retry.InvokeAsync(Func`1 action, Int32 numRetries, Int32 retryTimeout, Boolean finalThrow, Type[] exceptionTypes, Func`2 fallbackPolicy, Action`2 retryAction) in C:\\Workplaces\\Furion\\framework\\Furion\\FriendlyException\\Retry.cs:line 79\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_2.<b__2>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 231\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\ninfo: 2023-04-22 22:18:10.3507729 +08:00 \u661f\u671f\u516d L MyJob[0] #8\r\n [C] 3s 2ts 2023-04-22 22:18:10.308 -> 2023-04-22 22:18:13.318\r\nfail: 2023-04-22 22:18:10.4292529 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #8\r\n Error occurred executing [C] 3s 2ts 2023-04-22 22:18:10.308 -> 2023-04-22 22:18:13.318.\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n System.DivideByZeroException: Attempted to divide by zero.\r\n at MyJob.ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) in C:\\Users\\MonkSoul\\source\\repos\\ConsoleApp3\\Program.cs:line 29\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_3.<b__3>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 233\r\n --- End of stack trace from previous location ---\r\n at Furion.FriendlyException.Retry.InvokeAsync(Func`1 action, Int32 numRetries, Int32 retryTimeout, Boolean finalThrow, Type[] exceptionTypes, Func`2 fallbackPolicy, Action`2 retryAction) in C:\\Workplaces\\Furion\\framework\\Furion\\FriendlyException\\Retry.cs:line 79\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_2.<b__2>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 231\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"})}),"\n",(0,s.jsxs)(r.p,{children:["\u4ece\u4e0a\u9762\u6267\u884c\u65e5\u5fd7\u53ef\u4ee5\u770b\u51fa\uff0c\u4f5c\u4e1a\u6267\u884c\u51fa\u73b0\u5f02\u5e38\u53ea\u4f1a\u5f71\u54cd\u5f53\u524d\u89e6\u53d1\u65f6\u95f4\u7684\u6267\u884c\uff0c\u4f46\u4e0d\u4f1a\u5f71\u54cd\u4e0b\u4e00\u6b21\u6267\u884c\u3002\u51fa\u73b0\u8fd9\u79cd\u60c5\u51b5\u901a\u5e38\u914d\u7f6e ",(0,s.jsx)(r.strong,{children:"\u91cd\u8bd5\u7b56\u7565"})," \u786e\u4fdd\u6bcf\u6b21\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u53ef\u80fd\u6267\u884c\u6210\u529f\uff0c\u5982\u91cd\u8bd5 ",(0,s.jsx)(r.code,{children:"3"})," \u6b21\uff0c\u5982\uff1a"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {4}",children:"services.AddSchedule(options =>\r\n{\r\n options.AddJob(Triggers.PeriodSeconds(3)\r\n .SetNumRetries(3)); // \u91cd\u8bd5\u4e09\u6b21\r\n});\n"})}),"\n",(0,s.jsx)(r.p,{children:"\u8f93\u51fa\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {11-23}",children:"info: 2023-04-22 22:25:00.7244392 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2023-04-22 22:25:00.7293195 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2023-04-22 22:25:00.8796238 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-04-22 22:25:00.8852651 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2023-04-22 22:25:00.9348100 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\ninfo: 2023-04-22 22:25:03.9357047 +08:00 \u661f\u671f\u516d L MyJob[0] #12\r\n [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\nwarn: 2023-04-22 22:25:04.0147234 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #12\r\n Retrying 1/3 times for [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\ninfo: 2023-04-22 22:25:05.0243650 +08:00 \u661f\u671f\u516d L MyJob[0] #12\r\n [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\nwarn: 2023-04-22 22:25:05.0963359 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #12\r\n Retrying 2/3 times for [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\ninfo: 2023-04-22 22:25:06.1100662 +08:00 \u661f\u671f\u516d L MyJob[0] #12\r\n [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\nwarn: 2023-04-22 22:25:06.1785087 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #12\r\n Retrying 3/3 times for [C] 3s 1ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:06.888\r\nfail: 2023-04-22 22:25:07.3754596 +08:00 \u661f\u671f\u516d L System.Logging.ScheduleService[0] #16\r\n Error occurred executing [C] 3s 2ts 2023-04-22 22:25:03.840 -> 2023-04-22 22:25:09.884.\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n System.DivideByZeroException: Attempted to divide by zero.\r\n at MyJob.ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) in C:\\Users\\MonkSoul\\source\\repos\\ConsoleApp3\\Program.cs:line 30\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_3.<b__3>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 233\r\n --- End of stack trace from previous location ---\r\n at Furion.FriendlyException.Retry.InvokeAsync(Func`1 action, Int32 numRetries, Int32 retryTimeout, Boolean finalThrow, Type[] exceptionTypes, Func`2 fallbackPolicy, Action`2 retryAction) in C:\\Workplaces\\Furion\\framework\\Furion\\FriendlyException\\Retry.cs:line 91\r\n at Furion.FriendlyException.Retry.InvokeAsync(Func`1 action, Int32 numRetries, Int32 retryTimeout, Boolean finalThrow, Type[] exceptionTypes, Func`2 fallbackPolicy, Action`2 retryAction) in C:\\Workplaces\\Furion\\framework\\Furion\\FriendlyException\\Retry.cs:line 102\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_2.<b__2>d.MoveNext() in C:\\Workplaces\\Furion\\framework\\Furion\\Schedule\\HostedServices\\ScheduleHostedService.cs:line 231\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"})}),"\n",(0,s.jsxs)(r.admonition,{type:"tip",children:[(0,s.jsxs)(r.mdxAdmonitionTitle,{children:["\u5168\u5c40\u914d\u7f6e",(0,s.jsx)(r.strong,{children:"\u91cd\u8bd5\u7b56\u7565"})]}),(0,s.jsxs)(r.p,{children:["\u63a8\u8350\u4f7f\u7528 ",(0,s.jsxs)(r.a,{href:"./job#2619-%E4%BD%9C%E4%B8%9A%E6%89%A7%E8%A1%8C%E5%99%A8-ijobexecutor",children:["\u301026.1.9 \u4f5c\u4e1a\u6267\u884c\u5668 ",(0,s.jsx)(r.code,{children:"IJobExecutor"}),"\u3011"]})," \u914d\u7f6e\u5168\u5c40\u5f02\u5e38\u91cd\u8bd5\u7b56\u7565\u3002"]})]}),"\n",(0,s.jsx)(r.h3,{id:"26148-\u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u56de\u9000\u7b56\u7565",children:"26.1.4.8 \u4f5c\u4e1a\u6267\u884c\u5f02\u5e38\u56de\u9000\u7b56\u7565"}),"\n",(0,s.jsx)(r.admonition,{title:"\u7248\u672c\u8bf4\u660e",type:"important",children:(0,s.jsxs)(r.p,{children:["\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,s.jsx)(r.code,{children:"Furion 4.8.8.6 +"})," \u7248\u672c\u4f7f\u7528\u3002"]})}),"\n",(0,s.jsxs)(r.p,{children:["\u4f5c\u4e1a\u5904\u7406\u7a0b\u5e8f\u6267\u884c\u5f02\u5e38\u9664\u4e86\u914d\u7f6e ",(0,s.jsx)(r.code,{children:"\u91cd\u8bd5\u6b21\u6570"})," \u6216\u914d\u7f6e ",(0,s.jsx)(r.code,{children:"\u5168\u5c40\u5f02\u5e38\u91cd\u8bd5\u7b56\u7565"})," \u4ee5\u5916\uff0c\u8fd8\u53ef\u4ee5\u5b9e\u73b0 ",(0,s.jsx)(r.code,{children:"IJob.FallbackAsync"})," \u8fdb\u884c\u56de\u9000\u914d\u7f6e\u3002"]}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-cs",metastring:"showLineNumbers {13-17,22,24}",children:'public class TestJob : IJob\r\n{\r\n private readonly ILogger _logger;\r\n public TestJob(ILogger logger)\r\n {\r\n _logger = logger;\r\n }\r\n\r\n public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)\r\n {\r\n _logger.LogWarning($"{context}");\r\n\r\n // \u6a21\u62df\u8fd0\u884c\u7b2c\u4e09\u6b21\u51fa\u5f02\u5e38\r\n if (context.Trigger.NumberOfRuns == 3)\r\n {\r\n throw new Exception("\u5047\u88c5\u51fa\u9519");\r\n }\r\n\r\n await Task.CompletedTask;\r\n }\r\n\r\n public Task FallbackAsync(JobExecutedContext context, CancellationToken stoppingToken)\r\n {\r\n Console.WriteLine("\u8c03\u7528\u4e86\u56de\u9000");\r\n return Task.CompletedTask;\r\n }\r\n}\n'})}),"\n",(0,s.jsx)(r.p,{children:"\u8f93\u51fa\u65e5\u5fd7\u5982\u4e0b\uff1a"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",metastring:"showLineNumbers {22,30-31}",children:"info: 2023-04-25 17:19:06.5448438 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is running.\r\ninfo: 2023-04-25 17:19:06.5523770 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service is preloading...\r\ninfo: 2023-04-25 17:19:07.1156318 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-04-25 17:19:07.1293994 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n The trigger for scheduler of successfully appended to the schedule.\r\ninfo: 2023-04-25 17:19:07.1360332 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n The scheduler of successfully appended to the schedule.\r\nwarn: 2023-04-25 17:19:07.1614880 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #1\r\n Schedule hosted service preload completed, and a total of <1> schedulers are appended.\r\nwarn: 2023-04-25 17:19:11.1565118 +08:00 \u661f\u671f\u4e8c L Furion.Application.TestJob[0] #9\r\n [C] 4s 1ts 2023-04-25 17:19:11.067 -> 2023-04-25 17:19:15.092\r\nwarn: 2023-04-25 17:19:15.1275434 +08:00 \u661f\u671f\u4e8c L Furion.Application.TestJob[0] #18\r\n [C] 4s 2ts 2023-04-25 17:19:15.092 -> 2023-04-25 17:19:19.094\r\nwarn: 2023-04-25 17:19:19.1006636 +08:00 \u661f\u671f\u4e8c L Furion.Application.TestJob[0] #17\r\n [C] 4s 3ts 2023-04-25 17:19:19.094 -> 2023-04-25 17:19:23.067\r\nfail: 2023-04-25 17:19:19.2554424 +08:00 \u661f\u671f\u4e8c L System.Logging.ScheduleService[0] #17\r\n Error occurred executing in [C] 4s 3ts 2023-04-25 17:19:19.094 -> 2023-04-25 17:19:23.067.\r\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n System.Exception: \u5047\u88c5\u51fa\u9519\r\n at Furion.Application.TestJob.ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) in D:\\Workplaces\\OpenSources\\Furion\\samples\\Furion.Application\\TestJob.cs:line 22\r\n at Furion.Schedule.ScheduleHostedService.<>c__DisplayClass24_3.<