Библиотека упрощает управление параллельными операциями, автоматизируя планирование и обработку ошибок.
Что важно знать:
• Задачи выполняются одновременно без сложной настройки потоков;
• Можно легко отменять задачи и обрабатывать возникающие ошибки;
• Работа равномерно распределяется по всем доступным ядрам процессора.
Получаете простой, быстрый и надёжный параллельный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6❤4🤝1
Организуем неблокирующий продюсер–консюмер с ChannelReader/Writer!
При обмене данными между задачами часто нужно передавать данные по мере готовности, без блокировок и ручных очередей. Вместо
Сначала создаём канал без ограничений на размер — данные будут накапливаться в памяти:
Запускаем продюсера: он будет отправлять сообщения в канал с небольшой задержкой:
Теперь читаем данные по мере поступления через
🔥 Получаем асинхронную очередь: безопасную, читаемую и без ручных синхронизаций.
➡️ C# Ready | #практика
При обмене данными между задачами часто нужно передавать данные по мере готовности, без блокировок и ручных очередей. Вместо
lock или BlockingCollection используем Channel — асинхронный и безопасный способ обмена сообщениями.Сначала создаём канал без ограничений на размер — данные будут накапливаться в памяти:
var channel = Channel.CreateUnbounded<string>();
Запускаем продюсера: он будет отправлять сообщения в канал с небольшой задержкой:
_ = Task.Run(async () =>
{
for (int i = 1; i <= 5; i++)
{
await Task.Delay(500);
await channel.Writer.WriteAsync($"Msg #{i}");
Console.WriteLine($"Отправлено: Msg #{i}");
}
channel.Writer.Complete();
});
Теперь читаем данные по мере поступления через
await foreach — потребитель не блокируется и реагирует на каждое новое сообщение:await foreach (var msg in channel.Reader.ReadAllAsync())
{
Console.WriteLine($"Принято: {msg}");
}
🔥 Получаем асинхронную очередь: безопасную, читаемую и без ручных синхронизаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤1
Выбирай подходящий луч, чтобы мгновенно находить препятствия и держать плавную работу игры.
Что важно знать:
• Тонкий луч точен, толстый учитывает размеры цели;
• Фильтрация слоёв спасает от лишних проверок и нагрузки;
• Методы без выделений экономят память и стабилизируют кадры;
Правильный луч даёт точность и экономию ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥14❤6🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
С его помощью можно изучать исходный код сборок, исследовать внутренности библиотек и разбирать чужие проекты без доступа к исходникам. Поддерживает просмотр C#, IL-кода, поиск по сборкам и плагины для расширения функциональности.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤4👍3👎1
Он позволяет легко загружать XML из файла или строки, сохранять документ, добавлять новые элементы и работать с XPath для выборки узлов. Удобен для работы с конфигурациями, API-ответами и встроенными ресурсами.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤5🤝5👍2
Кэшируем данные в памяти с MemoryCache!
Каждый раз ходить в БД или внешний API — медленно и дорого:
Сделаем локальный кэш на 5 минут — без сторонних Redis и SQL.
Теперь оборачиваем «тяжёлый» вызов:
Проверяем работу: второй вызов берётся прямо из RAM.
🔥 Частые данные ложатся в быстрый RAM-кэш и истекают автоматически — меньше нагрузка на сервисы и более быстрые ответы.
➡️ C# Ready | #практика
Каждый раз ходить в БД или внешний API — медленно и дорого:
var price = GetPriceFromApi(id); // каждый запрос ждёт сеть/диск
Сделаем локальный кэш на 5 минут — без сторонних Redis и SQL.
using Microsoft.Extensions.Caching.Memory;
// nuget: Microsoft.Extensions.Caching.Memory
// создаём экземпляр кэша
var cache = new MemoryCache(new MemoryCacheOptions());
Теперь оборачиваем «тяжёлый» вызов:
int GetPriceCached(int id)
{
return cache.GetOrCreate($"price:{id}", entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5); // TTL
return GetPriceFromApi(id); // реальный источник
});
}
Проверяем работу: второй вызов берётся прямо из RAM.
Console.WriteLine(GetPriceCached(42)); // → 199
Console.WriteLine(GetPriceCached(42));
// мгновенный ответ
🔥 Частые данные ложатся в быстрый RAM-кэш и истекают автоматически — меньше нагрузка на сервисы и более быстрые ответы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍7🔥4
Скрипт проверяет жизнь сайта и задержку, сохраняя результаты для моментального анализа.
В этой задаче:
• Отправляет сетевой запрос и фиксирует время ответа;
• Проверяет доступность страницы и записывает код результата;
• Сохраняет данные в таблицу для последующей визуализации.
Эт помогает быстро заметить сбои и реагировать своевременно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤝6🔥5❤1