Собственная очередь событий: EventQueue<T>

В ряде задач требуется, чтобы события вызывались строго последовательно, а не каскадно, как в классической реализации. Каскадность заключается в том, что, если в обработчике какого-либо события встретится вызов другого (или того же, не принципиально) события, то, собственно, обработка первого события прервется до завершения работы обработчика второго события. Это абсолютно нормальное и всех устраивающее поведение в подавляющем большинстве случаев, но не во всех.
Иногда может потребоваться изменить такое поведение очереди событий, чтобы, в результате, вызов второго обработчика происходил только по завершению работы первого.

Подробнее »

Параллельные вычисления: класс MultiThread

Современные персональные компьютеры стали многопроцессорными (и/или многоядерными), это — факт! Пока еще не вышел .NET Framework 4.0 и C# 4.0, в котором заявлена поддержка многопоточности, и поэтому программисты, как правило, никак не используют параллельность в своих вычислительных программах. Характерно, что активно вычисляющая программа грузит процессор лишь на 50% (на 2-ядерной машине) или на 25% (на 4-ядерной машине), а ведь всегда требуется считать быстрее и грузить процессор по полной.

Подробнее »

PathOperations: заимствовано из VB.NET

Не знаю почему, но часть функционала, который мог бы быть полезен и пишущим на C#, досталась только одному VB.NET. По крайней мере, статические методы, приведенные мной ниже и предназначенные для работы с файловыми путями, изначально располагались в пространстве имен Microsoft.VisualBasic, а именно — в классе Microsoft.VisualBasic.FileIO.FileSystem.

Подробнее »

Бинарное дерево Tree<T>

Вашему вниманию предлагается класс, незаменимый при работе с древовидными данными.
Класс реализует все потребности при работе с бинарными деревьями: добавление, хранение, удаление, энумерацию.
Пока страдает описание, но, думаю, это я исправлю в ближайшее время, хотя, для сведущих, полагаю, не составит труда разобраться что к чему.

Подробнее »

Работа с интервалами: Interval<T>

В ряде алгоритмов имеется необходимость реализации работы с различными интервалами (числовыми, строковыми, пользовательскими, любыми IComparable<T>). Для этих целей должен прекрасно подойти следующий универсальный шаблонный класс:

Подробнее »

Типовые правила кодирования на C#

Начинающим project manager’ам, равно как и самостоятельным программистам, могут оказаться полезными приведенные (в довольно общем виде) правила кодирования на C#. На самом деле, список требований к исходному коду может составить и пару-тройку сотен пунктов, однако, для начала, попробуем ограничиться лишь небольшим набором обязательных правил (зачастую выстраданных неделями «тупежа» над кодом).

Подробнее »

Методы Between<T>

Не секрет, что почти в каждой программе, оперирующей с числовой информацией, приходится производить проверку принадлежности различных значений допустимым интервалам. Зачастую, такие выражения в операторах сравнения имеют довольно громоздкий вид, например:

Подробнее »

Класс Class<T1, T2, …>

Как описано в топике о структуре Pair<F, S>, зачастую требуется объединять объекты различных типов во временные структуры (или классы). Случай для двух объектов рассмотрен в предыдущем топике.
Теперь рассмотрим случай большего количества объектов.

Подробнее »

Структура Pair<F, S>

В ряде случаев бывает удобно использовать небольшие структуры, не содержащие методов. Однако не всегда хочется видеть у себя в коде множество одинаковых структур, предназначенных, к примеру, лишь для возвращаемых значений каких-либо методов.

Подробнее »

Открытие блога!

Добро пожаловать в Usings.RU!

Этот блог посвящен языку C# (главным образом — версии 3.0) и ориентирован на программистов, которые активно используют данный язык.
Основная цель проекта: поделиться своим опытом и помочь Вам сэкономить время при решении ряда утилитарных задач. Дополнительно, хочется надеяться на то, что и я подчерпну для себя много полезного в ходе обмена опытом с Вами, уважаемые коллеги.

С уважением, Дмитрий.