首页 > 其他分享 >hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放而导致的性能问题

hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放而导致的性能问题

时间:2024-12-26 20:44:05浏览次数:5  
标签:Dispose completed hangfire System public Threading context true void

如题
https://github.com/sergezhigunov/Hangfire.EntityFrameworkCore/issues/32

public class Worker : IBackgroundProcess
{
 public void Execute(BackgroundProcessContext context)
 {
    using (var fetchedJob = connection.FetchNextJob(_queues.ToArray(), context.StoppingToken))
    {
      ...
      fetchedJob.RemoveFromQueue();// 它会设置EFCoreFetchedJob._completed=true,进而导致后续的_timer.Dispose()未执行
      ...
    }
  }
}
internal sealed class EFCoreFetchedJob : IFetchedJob
{
  private bool _completed;
  public void RemoveFromQueue()
  {
    lock (_lock)
    {
      _storage.UseContext(context =>
      {
        context.Remove(_queuedJob);
        try
        {
          context.SaveChanges();
        }
        catch (DbUpdateConcurrencyException)
        {
          // Someone else already has removed item, database wins
        }
      });
       _completed = true;//这里在Dispose前就执行了
     }
  }
  public void Dispose()
  {
    Dispose(true);
    GC.SuppressFinalize(this);
  }

  private void Dispose(bool disposing)
  {
    if (!_disposed)
    {
        if (disposing && !_completed)//因为_completed=true,所以_timer.Dispose()不执行
        {
            _timer.Dispose();
            Requeue();
        }
        _disposed = true;
    }
  }
}

标签:Dispose,completed,hangfire,System,public,Threading,context,true,void
From: https://www.cnblogs.com/pains/p/18634141

相关文章

  • SharePoint System.Net.WebException:“远程服务器返回错误: (414) REQUEST URI TOO
    SharePointCSOM执行下面代码时报错:stringfileServerRelativeUrl="/xxxx/2003249_98.RXE";using(varfileInfo=Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctxOriginal,fileServerRelativeUrl))using(varreader=newStreamReader(fileInfo.Stream))......
  • Sigrity System SI SerialLink模式对串行链路进行串扰仿真分析操作指导-S参数模型
    SigritySystemSISerialLink模式对串行链路进行串扰仿真分析操作指导-S参数模型SigritySystemSISerialLink模式可以对串行链路进行串扰仿真分析,通过通道串扰仿真得到串扰频域波形,2D时域波形,2D眼图,3D眼图,误码率结果以及仿真报告下面以一个S参数模型的串扰通道模板进行说......
  • Sigrity System SI SerialLink模式对串行链路进行串扰仿真分析操作指导-传输线模型
    SigritySystemSISerialLink模式对串行链路进行串扰仿真分析操作指导-传输线模型SigritySystemSISerialLink模式可以对串行链路进行串扰仿真分析,通过通道串扰仿真得到串扰频域波形,2D时域波形,2D眼图,3D眼图,误码率结果以及仿真报告下面以一个传输线模型的串扰通道模板进行......
  • .NET Core 类型系统(Types System)底层原理浅谈
    C#类型系统C#是一种强类型语言。每个变量和常量都有一个类型,每个求值的表达式也是如此。每个方法声明都为每个输入参数和返回值指定名称、类型和种类(值、引用或输出)。.NET类库定义了内置数值类型和表示各种构造的复杂类型。其中包括文件系统、网络连接、对象的集合和数组以......
  • Sigrity System SI Parallel Bus Analysis模式进行DDR3 FlyBy拓扑地址组仿真分析-4个
    SigritySystemSIParallelBusAnalysis模式进行DDR3FlyBy拓扑地址组仿真分析-4个颗粒SigritySystemSIParallelBusAnalysis模式提供了简易的已搭建好的模板,方便用户直接在模板上替换数据文件进行仿真分析,下面介绍addr_bus_sparam_4mem模板的使用,是一个4颗粒的Fly-By......
  • LargeSystemCache=1 启用“大型系统缓存”,适用于高内存的服务器,能提高文件系统的缓存
    "LargeSystemCache"=dword:00000000这一行通常出现在Windows操作系统的注册表设置中,涉及到系统内存管理的配置,特别是与文件缓存(FileCache)相关的部分。它具体控制Windows操作系统如何使用系统内存来缓存文件系统数据。下面逐个回答你的问题:1. 为什么(Why)"LargeSystemCac......
  • Python模块之threading
    模块作用简介:Python模块之threadingthread模块基本被废弃了,现在多用threading模块来创建和管理子线程有两种方式来创建线程:第一种是:用class继承Thread类,并重写它的run()方法;第二种是:在实例化threading.Thread对象的时候,将线程要执行的任务函数作为参数传入线程。......
  • Sigrity System SI Parallel Bus Analysis模式进行DDR3仿真分析-传输线模型带VRM
    SigritySystemSIParallelBusAnalysis模式进行DDR3仿真分析-传输线模型带VRMSigritySystemSIParallelBusAnalysis模式提供了简易的已搭建好的模板,方便用户直接在模板上替换数据文件进行仿真分析,下面介绍data_bus_welem_vrm模板的使用,具体操作如下双击启动SystemS......
  • Build an Intrusion-Detection-System using Python
    BuildanIntrusion-Detection-SystemusingPythonhttps://medium.com/@nawailk/build-an-intrusion-detection-system-using-python-nawail-khan-8b9e09e6cf88IhavebuiltanIntrusionDetectionSystem,whichalsoworksreal-timetosecureanyspecifiedarea.Th......
  • Get-WmiObject -Class Win32_SystemEnclosure -Namespace "root\CIMV2" | Select-Obj
    Get-WmiObject-ClassWin32_SystemEnclosure-Namespace"root\CIMV2"|Select-ObjectChassisTypes这条PowerShell命令用于查询计算机的硬件外壳(Chassis)信息,特别是返回系统机箱类型(ChassisTypes)。解释命令的组成部分:Get-WmiObject:这是一个用于查询WindowsManagement......