业务很简单,站点启动后,用一个后台服务定时同步数据,写入SqlLite数据表

`private readonly IServiceProvider _service;

    public KlineStoryLoader(IServiceProvider service)
    {
        _service = service;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            await Task.Yield();
            try
            {
                using var scope = _service.CreateScope();
                var dataService = scope.ServiceProvider.GetService<IKlineStoryService>();
                await dataService.SyncDataAsync();
            }
            catch (System.Exception err)
            {
                Logger.WriteLog(LogLevel.Error, "同步异常", err);
            }
            await Task.Delay(1 * 1000);
        }
    }`


注意黑体部分,不使用这种方式,会导致SqlLite在被读取时,同步写入数据失败:

using var scope = _service.CreateScope();
var dataService = scope.ServiceProvider.GetService<IKlineStoryService>();

李大伟_大不发音
11 声望0 粉丝

喜欢音乐,喜欢真实,喜欢电影,喜欢篮球,喜欢自由自在


引用和评论

0 条评论