Имам проблем с използването на Database в нишка в ASP.NET приложение. Искам когато пусна приложението да се започва нишка наречена „BackgroundWorker“, която върви на заден план докато не се спре приложението.
Обаче имам проблем с dbContext в тази нишка.
Опитвам да пусна worker-а в Startup.cs в методите "ConfigureServices" или "Configure" и след това да инициализирам dbContext-а в конструктура на worker-а (dbContext = new ApplicationContext()). Казва ми че връзката не е конфигурирана когато опитам да работя с while(true) опашката на базата. Ако си напиша мой контролер за worker-а, който получава ApplicationContext в конструктура, и след това пуска нишката, като извикам контролера с GET заявка:
public BackgroundWorker(ChronicusContext dbContext)
{
_dbContext = dbContext;
_messageService = new MailMessageService();
}
// GET: api/backgroundworker
[HttpGet]
[Route("start")]
public void StartWorker()
{
//Thread thread = new Thread(this.DoBackGroundWork);
Thread thread = new Thread(() => DoBackGroundWork(this._dbContext));
thread.Start();
}
public void DoBackGroundWork(ChronicusContext _dbContext)
{
while (true)
{
if (_dbContext.PollModels.Any()) //Here is the exception
{
...
}
}
}
Получавам System.ObjectDisposedException, което значи че обектът вече е освободен в while (true) опашката.
Опитах по различни начини, но винаги получавам изключение като това или че връзката с базата е затворена.
Ще съм благодарен ако ми помогнете!