Дневник сертифицированного .NET разработчика. Заметки, советы, новости из мира .NET и C#.
Для связи: @SBenzenko
Поддержать канал:
- https://boosty.to/netdeveloperdiary
- https://patreon.com/user?u=52551826
- https://pay.cloudtips.ru/p/70df3b3b
Post #2105
1.99K
День 1735. #ЗаметкиНаПолях
Фоновые Задачи и Как Их Использовать. Окончание
Начало
Очистка кэша с помощью фоновой задачи
Вы можете создать фоновую задачу, которая запускается через регулярные промежутки времени, например раз в час или раз в день, чтобы проверять срок действия кэшированных элементов. Каждый кэшированный элемент может иметь метку времени или значение времени жизни (TTL), связанное с ним, чтобы указать, когда его следует считать устаревшим.
Вот как будет выглядеть упрощённое управление кэшем в приложении:
В этом примере CacheManager управляет кэшем и имеет фоновую задачу (StartCleanup), которая периодически удаляет устаревшие элементы в зависимости от их меток TTL. Это гарантирует, что кэш будет оставаться актуальным и не будет расти бесконечно:
Вывод:
Итого
Фоновые задачи – полезный инструмент для приложений .NET.
- Фоновые задачи предотвращают блокировку основного потока приложения длительными операциями, сохраняя отзывчивость UI и предотвращая зависание приложения.
- Выполняя ресурсоемкие задачи в фоновом режиме, приложения могут более эффективно использовать системные ресурсы, что приводит к повышению производительности и масштабируемости.
- Фоновые задачи обеспечивают параллельное выполнение задач, позволяя приложениям одновременно обрабатывать несколько операций, что важно для обработки больших рабочих нагрузок.
- Они идеально подходят для автоматизации рутинных задач, таких как очистка кэша, синхронизация данных и обслуживание баз данных, сокращая количество ручного вмешательства и обеспечивая точность данных.
- Фоновые задачи помогают эффективно управлять ресурсоёмкими операциями, такими как обработка изображений или доставка электронной почты, предотвращая истощение ресурсов.
- Они способствуют масштабируемости приложения, позволяя ему справляться с возросшей нагрузкой и требованиями без значительного снижения производительности.
Источник: https://stefandjokic.tech/posts/background-tasks-how-to-use-them
Фоновые Задачи и Как Их Использовать. Окончание
Начало
Очистка кэша с помощью фоновой задачи
Вы можете создать фоновую задачу, которая запускается через регулярные промежутки времени, например раз в час или раз в день, чтобы проверять срок действия кэшированных элементов. Каждый кэшированный элемент может иметь метку времени или значение времени жизни (TTL), связанное с ним, чтобы указать, когда его следует считать устаревшим.
Вот как будет выглядеть упрощённое управление кэшем в приложении:
var cache = new CacheManager();
// Добавляем элементы в кэш
cache.AddItem("item1", "value1",
TimeSpan.FromSeconds(30));
cache.AddItem("item2", "value2",
TimeSpan.FromMinutes(1));
// Начинаем очистку кэша
_ = Task.Run(() => cache.StartCleanup(
TimeSpan.FromSeconds(15)));
// Продолжаем работу приложения
Console.WriteLine("Приложение работает...");
Console.ReadLine();
В этом примере CacheManager управляет кэшем и имеет фоновую задачу (StartCleanup), которая периодически удаляет устаревшие элементы в зависимости от их меток TTL. Это гарантирует, что кэш будет оставаться актуальным и не будет расти бесконечно:
class CacheManager
{
private Dictionary<string, CacheItem>
cache = new();
public void AddItem(
string key,
object value,
TimeSpan expiration)
{
var item = new CacheItem(
value,
DateTime.Now.Add(expiration));
cache[key] = item;
}
public async Task StartCleanup(
TimeSpan interval)
{
while (true)
{
await Task.Delay(interval);
var now = DateTime.Now;
var toRemove = new List<string>();
foreach (var kvp in cache)
{
if (kvp.Value.Expiration < now)
toRemove.Add(kvp.Key);
}
foreach (var key in toRemove)
{
Console.WriteLine($"{key} удалён");
cache.Remove(key);
}
}
}
}
class CacheItem
{
public object Value { get; }
public DateTime Expiration { get; }
public CacheItem(object value,
DateTime expiration)
{
Value = value;
Expiration = expiration;
}
}
Вывод:
Приложение работает…Фоновые задачи по очистке кэша помогают поддерживать производительность приложений, обеспечивая эффективность кэша и избегая использования устаревших данных.
// через 30 секунд
item1 удалён
// через 1 минуту
item2 удалён
Итого
Фоновые задачи – полезный инструмент для приложений .NET.
- Фоновые задачи предотвращают блокировку основного потока приложения длительными операциями, сохраняя отзывчивость UI и предотвращая зависание приложения.
- Выполняя ресурсоемкие задачи в фоновом режиме, приложения могут более эффективно использовать системные ресурсы, что приводит к повышению производительности и масштабируемости.
- Фоновые задачи обеспечивают параллельное выполнение задач, позволяя приложениям одновременно обрабатывать несколько операций, что важно для обработки больших рабочих нагрузок.
- Они идеально подходят для автоматизации рутинных задач, таких как очистка кэша, синхронизация данных и обслуживание баз данных, сокращая количество ручного вмешательства и обеспечивая точность данных.
- Фоновые задачи помогают эффективно управлять ресурсоёмкими операциями, такими как обработка изображений или доставка электронной почты, предотвращая истощение ресурсов.
- Они способствуют масштабируемости приложения, позволяя ему справляться с возросшей нагрузкой и требованиями без значительного снижения производительности.
Источник: https://stefandjokic.tech/posts/background-tasks-how-to-use-them
- 👍 7
