using YLErp.BLL.Eod; using YLErp; using YLErp.BLL; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; namespace YLErp.Jobs.Imp { /// /// 实时持仓计算 /// public class RealTimeCalcPositionJob : BaseJob { private readonly ILogger _logger; readonly IConfiguration _configuration; public RealTimeCalcPositionJob(IConfiguration configuration, ILogger logger) { _logger = logger; _configuration = configuration; } public override async Task StartAsync() { _logger.LogInformation("实时持仓服务开始:{time}", DateTimeOffset.Now); //设置波动率计算时的异常处理方法 VolCaculator.SetExHandler(msg => { _logger.LogInformation($"VolCaculator:{msg}"); }); return await base.StartAsync(); } public override async Task StopAsync() { _logger.LogInformation("实时持仓服务停止: {time}", DateTimeOffset.Now); return await base.StopAsync(); } public override Task JobImp() { try { var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); // 开始监视代码 RealtimePnlCalc.RealtimePosition(new OptUserInfo(0, "实时持仓服务", OptUserFrom.Service)); stopwatch.Stop(); // 停止监视 var msecond = stopwatch.ElapsedMilliseconds; // 获取总时间 _logger.LogInformation($"实时持仓服务结束:共{msecond}毫秒"); } catch (Exception ex) { _logger.LogError(ex, "实时持仓服务异常:" + ex.Message); } return Task.CompletedTask; } #region JobStatus Manager static JobStatus jobStatus = JobStatus.Init; public override JobStatus GetJobStatus() { return jobStatus; } public override void SetJobStatus(JobStatus status) { jobStatus = status; } #endregion } }