一定の経験を持つ開発者がバックグラウンドサービスに触れている限り、それらはサービスの作成、スケジューリングロジック処理、ビジネスロジックの作成、その他のリンクから切り離せません。新しいバックグラウンド サービス プロジェクトを作成するときは、以前のコードをコピーし、それを完成させるためのスレッドやその他のメソッドを記述してから、サービスのインストールを処理することがよくあります。ほとんどの時間は、こうした反復的なタスクに費やされます。
ここで提供するのは、簡易バックグラウンドサービス処理フレームワークです。 簡易バックグラウンドサービス処理フレームワークは、(指定間隔で実行、毎日指定時刻に1回実行、指定時刻に1回実行、開始と終了の指定)をサポートしています。毎日の時間と指定された間隔に従って実行)、新しいスケジュールされたサービス タスクを開発する場合、抽象クラス メソッドを実装し、タスク構成を追加し、インストール スクリプトを実行するだけでサービスの開発が完了します。
フレーム コード パス: フレームワーク コード
フレームワークは、タスクの実行ロジックを制御するための実行タイプの構成をサポートします
指定された間隔で実行します
指定された時刻に 1 日 1 回実行します
指定された時刻に 1 回実行します
を指定します毎日の開始時刻と終了時刻と指定された間隔で実行します
以下はストアドプロシージャを定期的に実行するタスクです。
基本クラスを継承してビジネスロジックコードを書く
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)); } } } }
サービス名を設定する
各実行間隔を60秒に設定する
[ { //循环执行任务 每次执行间隔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参数 可空 } ]
書き込みが完了したらコンパイルして実行:インストールする。 Bat サービス マネージャーで対応するサービスを参照してください。
フレームコードパス: フレームワークコード
以上が.NET バックグラウンド タイミング サービス フレームワークの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。