创建内部 WebAPI 2.0 循环

Creating an inner WebAPI 2.0 loop

我正在使用 MongoDB 作为我的数据库编写 WebAPI 2.0。

在写的过程中,需要创建一个内循环

我这样做了: 在

中启动
    ConfigureServices (IServiceCollection services)
    {
        Task.Run (() => _MainClass.InnerLoop ()); // This function has this inner loop
    }

后来,我不得不将 MongoDB 数据库上下文“DbContext”传递给此函数。

我不知道怎么做,所以我就这样做了:

  1. 我创建了一个“post”,我将上一个函数的内容移动到其中。 (以某种方式通过接口传递“DbContext”。如您所知,请在评论中指出)。
  2. 里面 _MainClass.InnerLoop() 我把
    public void InnerLoop()
    
    {
        
    while(true)
        {
           
            FunctionToHttpRequest(@"http://localhost:5000/api/MyController RunInnerLoop");
        
            Thread.Sleep(1000);
        }
    }

我得到了一个模仿我想要的效果。 一个单独的线程是一些客户得到一个错误:

"The SSL connection could not be established, see inner exception. The remote certificate is invalid according to the validation procedure."

但是我正在努力,正如你在评论中所说的那样。

来自该线程的问题: 如何“专业地”执行这样的循环,即不调用自身,而是将“DbContext”传递给此循环?

我自己解决了这个问题,我想分享解决方案。如果您有任何意见,请写信。

我修改了

public class BaseService
 {     

      protected readonly IDbContext DbContext;

      public static IDbContext public_base_dbContext {get; private set;}

      public BaseService (IDbContext dbContext)
      {
           public_base_dbContext = dbContext;
           DbContext = dbContext;
      }

 }

并写信给

public void InnerLoop ()
{
IDbContext _dbContext;
do
{
      _dbContext = BaseService.public_base_dbContext;

      if (_dbContext == null)
      {
           Thread.Sleep (1000);
            Console.WriteLine (DateTime.Now + "IDbContext search starting ...");
      }
} while (_dbContext == null);

这样它从 MongoDB 挂钩 DbContext,我不需要在里面调用 API。