Tant que les développeurs ayant une certaine expérience ont été exposés aux services d'arrière-plan, ils sont indissociables de la création de services, du traitement logique de planification, de l'écriture de logique métier et d'autres liens. Souvent, lorsque nous créons un nouveau projet de service en arrière-plan, nous copions le code précédent, écrivons des threads et d'autres méthodes pour le terminer, puis nous occupons de l'installation du service. La plupart du temps est perdu sur ces tâches répétitives.
Ce qui est fourni ici est un cadre de traitement de service en arrière-plan simple. Le cadre de traitement de service en arrière-plan simple prend en charge (l'exécution à des intervalles spécifiés ; l'exécution à des heures spécifiées chaque jour ; l'exécution une fois à des heures spécifiées ; les heures de début et de fin spécifiées chaque jour et comme exécution à intervalle spécifié), lors du développement d'une nouvelle tâche de service planifiée, il vous suffit d'implémenter la méthode de classe abstraite, d'ajouter la configuration de la tâche et d'exécuter le script d'installation pour terminer le développement d'un service.
Chemin du code du framework : Code du framework
Le framework prend en charge la configuration des types d'exécution pour contrôler la logique d'exécution des tâches
Exécution à intervalles spécifiés
Chaque jour Exécuter une fois par jour à une heure spécifiée
Exécuter une fois par jour à une heure spécifiée
Spécifiez l'heure de début et de fin chaque jour et exécutez à l'intervalle spécifié
Ce qui suit est une tâche qui exécute régulièrement une procédure stockée.
Hériter de la classe de base et écrire le code de logique métier
using DataAccessHelper.SQLHelper;using Services.Common;using System;namespace Services.Tasks { public class CallProcTask : ServiceBase { protected override void Exec() { try { if (_isStart) { if (!string.IsNullOrWhiteSpace(Config.Param)) { LogFactory.GetLogger().Info(string.Format("开始执行存储过程 {0}", Config.Param)); SQLHelperFactory.Instance.ExecuteNonQuery(Config.Param, null); LogFactory.GetLogger().Info(string.Format("执行存储过程 {0} 完成", Config.Param)); } } } catch (Exception ex) { LogFactory.GetLogger().Error(string.Format("执行存储过程 {0} 异常:{1}", Config.Param, ex)); } } } }
Configurer le nom du service
Configurez chaque intervalle d'exécution de 60 secondes
[ { //循环执行任务 每次执行间隔60秒 "ServiceName": "CallProcTask-proc_test任务",//服务名称 非空 "Assembly": "Services.exe",//程序集 非空 "Methods": "Services.Tasks.CallProcTask",//执行类名 对应业务的类名 非空 "S_Interval": 60,//间隔时间 单位秒 "ExecType": 0,//执行类型 ( 0:按指定间隔时间执行 1:每天指定时间执行 每天一次 2:指定时间执行一次 3.每天指定开始和结束时间并且按照指定间隔时间执行) 可空默认0 "Param": "proc_test"//自定义参数 在本案例中为SQL参数 可空 } ]
Une fois l'écriture terminée, compilez et exécutez : Install.bat pour voir le service correspondant dans le gestionnaire de services.
Chemin du code framework : Code framework
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!