Я следовал руководству по началу работы и в настоящее время у меня есть приложение TODO CRUD.
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api-mac?view=aspnetcore-2.1
Я хочу добавить фонового работника, который обновляет базу данных задач каждые 5 минут иустанавливает для элемента 1 случайное значение для его имени и свойства isCompleted.
Это довольно просто в Java SpringBoot или Elixir's Phoenix ... Существует ли быстрый и безболезненный способ сделать это в c #?
Документ, который я нашел на веб-сайте Microsoft, был с 2012 года ... поэтому я предполагаю, что к настоящему времени есть более элегантный способ сделать это.
Редактировать: я пошел с DNTScheduler.Core, и это было относительно безболезненноустановить.Следовал примеру exampleApp, который был на github repo, и вот задача, которую я в итоге использовал:
using System;
using System.Threading.Tasks;
using DNTScheduler.Core.Contracts;
using Microsoft.Extensions.Logging;
using myapp.Models;
namespace MyApp.Tasks
{
public class TaskOne : IScheduledTask
{
private readonly ILogger<DoBackupTask> _logger;
private readonly TodoContext _context; // autoinjects since it was added in startup.cs in configure()
public TaskOne(ILogger<DoBackupTask> logger, TodoContext context)
{
_logger = logger;
_context = context;
}
public Task RunAsync()
{
var todo = _context.TodoItems.Find(1);
if (todo == null)
{
return Task.CompletedTask;
}
string[] names = new string[] { "val1", "val2"};
Random r = new Random();
string random_name = names[r.Next(0, names.Length)];
todo.Name = random_name;
_context.TodoItems.Update(todo);
_context.SaveChanges();
_logger.LogInformation("Ran My Task\n\n ");
return Task.CompletedTask;
}
}
}