静态数据库上下文和最大线程池大小

时间:2018-06-18 17:09:10

标签: dbcontext static-classes

我正在调查已达到最大线程池大小的问题,我找到了以下代码:

public class MonitorApp
{
   private static DbContext _dbContext;

   public MonitorApp
   {
        _dbContext = ...;
        _start();
   }

   private void _start()
   {
        while(true)
        {

        // Execute queries to detect if number of rows exceeds what we     expect
        var query = _dbContext.Jobs.Include(j => j.Pages).ThenInclude(p     => p.Users); // this is much larger in the real piece of code

        if (query.Count() > 10)
        {
            // do another query etc.

            ... // email important person to notify
        }

        Task.Delay(15000); // sleep
   }
}

上面的代码使用静态数据库上下文,我知道这是一种不好的做法。但是我们会发出一些查询,我想结果会被清除,但数据库上下文永远不会。

这是否是我们达到最大线程池大小的原因?可能是这个应用程序查询了这么多,它在一天结束时使用了数据库线程池中可用的所有可用线程?此应用程序中只有一个实例在任何给定时间运行。

0 个答案:

没有答案