Синхронизация с использованием типа System.Threading.Interlocked

System.Threading.Interlocked предоставляет функциональность для потокобезопасного манипулирования одним элементом данных, например:

Decrement() Безопасно уменьшает значение параметра на 1
Exchange() Безопасно меняет значения двух параметров местами
Increment() Безопасно уменьшает значение параметра на 1

Синхронизация с использованием атрибута [Synchronization]

Для обеспечения потокобезопасной работы целого класса, он помечается атрибутом [Synchronization]. Класс должен наследовать от ContextBoundObject . Данный подход требует аккуратного использования, поскольку синхронизации подвергаются все члены отмеченного класса, вне зависимости от того, действительно ли это нужно, что может замедлить работу программы.

Использование System.Threading.Timer

void ThreadMethod(object param)

{

}

...

// Создать делегат для выполнения в отдельном потоке

TimerCallback timeCB = new TimerCallback(ThreadMethod);

// Установить настройки таймера.

Timer t = new Timer(

timeCB, // Объект-делегат TimerCallback.

null, // Информация для передачи в вызванный метод

0, // Время перед запуском (в миллисекундах).

1000 // Время между вызовами (в миллисекундах) .

);